创建动态Two.js变量涉及到个人的单击事件(Create dynamic Two.js varia

2019-10-18 18:17发布

在创建two.js对象,这里的部分:

var circle1 = two.makeCircle(676,326,25);
circle1.noStroke().fill = getRandomColor();
circle1.domElement = document.querySelector('#two-' + circle1.id);
$(circle1.domElement)
    .css('cursor', 'pointer')
    .click(function(e) {
        circle1.fill = getNonMainRandomColor(getRandomColor());
    });

我试图保存在数组作为这样所有必要的参数:

[x position, y position, radius, color]

所以我有功能

function showCircles(array) {
  for(var i = 0; i < array.length; i++) {
    var rotato = two.makeCircle(array[i][0],array[i][1],array[i][2]);
    rotato.noStroke().fill = array[i][3];
    rotato.domElement = document.querySelector('#two-' + rotato.id);
    $(rotato.domElement).css('cursor', 'pointer').click(function(e) {rotato.fill = getNonMainRandomColor(getRandomColor());});
  } 
}

与后者的问题是,所述线

    rotato.domElement = document.querySelector('#two-' + rotato.id);
    $(rotato.domElement).css('cursor', 'pointer').click(function(e) {rotato.fill = getNonMainRandomColor(getRandomColor());});

需要一个新的变量每次被激发从而输出是一组圆圈,其单独点击时,只有最后一个变化,因为我有这是造成该设置的颜色时间var rotato ,应该是新的每一个圆圈和迭代。

如何让我的动态变化,还是有更好的解决这个烂摊子?

这里是一个codepen叉 。

Answer 1:

这里的问题是,JavaScript的for语句不为每个迭代倒闭。 任何圆的被点击时的结果看起来对什么参考rotato 。 这个变量被重新每次迭代,结果是你指的是作为数组中的最后一项内容。

我已经分叉并提出一个使用新codepen underscore.js的map方法,在two.js.捆绑 这是类似for ,只是每次迭代它创建了一个声明闭合使独立引用到每个的rotato你构建的变量。

http://codepen.io/anon/pen/ylzvx



文章来源: Create dynamic Two.js variables to involve individual click event