2013-05-05 80 views
0
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()的次數。 那麼我如何保存矩形的實際位置?無法獲取計數器變量在事件處理程序

+0

快速瀏覽一下,嘗試在聲明k之前添加var。我不確定你使用的瀏覽器是什麼,但我記得JavaScript把它當作一個新變量處理,如果你不在FF的舊版本中聲明它,不確定這些日子,因爲我總是聲明。 – 2013-05-05 16:28:25

回答

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) { 
    var kineticGroup = new Kinetic.Group({ 
    draggable:true 
    }); 

    kineticGroup['x0'] = x0; 
    kineticGroup['y0'] = y0; 

    m = 0; 
    kineticGroup[m] = new Kinetic.Rect({ 
    x:x0, 
    y:y0, 
    width:sf_width, 
    height:sf_height, 
    fill:'#EEE', 
    stroke:'#000', 
    strokeWidth:randbreite_sf 
    }); 
    kineticGroup.add(kineticGroup[m]); 
    m++; 


    kineticGroup.on('dragend', function() { 
    var dx = parseFloat(document.getElementsByName("dx")[0].value); 
    var dy = parseFloat(document.getElementsByName("dy")[0].value); 
    kineticGroup['x'] = kineticGroup['x0'] + dx; 
    kineticGroup['y'] = kineticGroup['y0'] + dy; 
    }); 
    boxLayer.add(kineticGroup); 
    sf.push(kineticGroup); 
} 

的事實是,你其實並不需要任何反擊存儲RECT位置的歷史 - 你可以把它推到數組使用Array.prototype.push:http://www.w3schools.com/jsref/jsref_push.asp

相關問題