k=0;
var sf = new Array();
function draw_sf (type,sf_text,schriftgroesse,sf_width,sf_height,x0,y0,ports_top,ports_right,ports_bottom,ports_left) {
sf[k] = new Kinetic.Group({
draggable: true
});
sf[k]['x0']=x0;
sf[k]['y0']=y0;
m=0;
sf[k][m] = new Kinetic.Rect({
x: x0,
y: y0,
width: sf_width,
height: sf_height,
fill: '#EEE',
stroke: '#000',
strokeWidth: randbreite_sf
});
sf[k].add(sf[k][m]);
m++;
sf[k].on('dragend', function() {
var dx=parseFloat(document.getElementsByName("dx")[0].value);
var dy=parseFloat(document.getElementsByName("dy")[0].value);
sf[k]['x']=sf[k]['x0']+dx;
sf[k]['y']=sf[k]['y0']+dy;
});
boxLayer.add(sf[k]);
k++;
}
Моей функцию draw_sf() рисует прямоугольник, который можно перемещать мое сопротивление & падения. После удаления (обработчик событий «dragend») я хочу сохранить новую позицию элемента в массиве. Но моя переменная счетчика «k» не учитывается в функции dragend. k всегда является числом раз, когда я называл draw_sf(). Итак, как я могу сохранить фактические позиции моих прямоугольников?Не удается получить переменный счетчик в обработчик событий
С быстрым взглядом попробуйте добавить var, прежде чем объявлять k. Я не уверен, какой браузер вы используете, но я помню, как javascript рассматривал его как новую переменную, если вы не объявляете ее в более старой версии FF, не уверен, что в эти дни, как я всегда заявляю. –