0

我对 JavaScript 很陌生..我基本上是在编写这个不同的形状绘图(在画布上)程序,当用户可以在单击所需的形状按钮后在画布上绘制形状时......代码如下所示:

var rectangle = document.getElementById('rec');
rectangle.addEventListener('click', function (e) {
    x2 =  y2 = 0;
    globalOption = 'rec';
    var rec = new shape();
    e.preventDefault();
}, false)

之后在 init 函数中.. 在 mousedown 事件中:

else if(globalOption == 'rec')
    {           
        e.target.style.cursor = 'crosshair';
        rec.name = 'rec';
        started = 'true';
        x2 = y2 = 0;
        x = e.pageX - canvas.offsetLeft;
        y = e.pageY - canvas.offsetTop;
        rec.x = x;
        rec.y = y;
        //context.beginPath();
    }

我将有关此形状的所有信息存储在我之前在 addEventListener 代码“var rec = new shape();”中创建的形状对象中。我在鼠标向上事件中将此对象推送到数组中。现在的问题是,它只存储最后推送对象的信息..即使数组长度是正确的..但它包含的所有对象都具有与最后推送对象相同的信息!为什么??我尝试放置“var rec = new shape();” 线在不同的地方,但没有用!

4

2 回答 2

4

您应该创建一个新对象并将数据从 rec 复制到它。然后将新对象推送到数组中。否则它只会保留对“rec”变量的引用,这就是为什么你总是得到最后一个元素。

于 2013-10-28T18:07:35.900 回答
0

我通过引用复制每个对象.. 它需要的是创建一个新对象,一个一个复制每个值,然后推送该新对象!

于 2013-10-29T14:16:06.427 回答