【发布时间】:2014-06-28 13:18:35
【问题描述】:
我有一个充满需要执行的代码的数组。它是使用kinetic.js 用于 HTML5 画布的项目的一部分。
我运行for loop 来遍历这个数组并使用eval() 来执行数组中的代码。该数组称为tiles,其中一部分可能如下所示:
context.fillStyle="rgb(255,255,255)";
context.beginPath();
context.moveTo(256,197);
context.lineTo(177,241);
context.bezierCurveTo(172,237,167,232,162,228);
context.fill();
现在我将我的 for 循环与正常的动力学代码相结合,以遍历数组、执行代码并在我的画布上创建形状。例如:
var layer = new Kinetic.Layer();
for (var i=0 ;i<5; i++) {
var tile = new Kinetic.Shape({
sceneFunc: function(context){ eval(tiles[i]); }
});
layer.add(tile);
}
stage.add(layer);
但这只会添加一个数组项!!这到底是怎么回事?这非常令人困惑,因为如果我写出 for 循环,它就可以工作。像这样:
var tile = new Kinetic.Shape({
sceneFunc: function(context){ eval(tiles[0]); }
});
layer.add(tile);
var tile = new Kinetic.Shape({
sceneFunc: function(context){ eval(tiles[1]); }
});
layer.add(tile);
var tile = new Kinetic.Shape({
sceneFunc: function(context){ eval(tiles[2]); }
});
layer.add(tile);
etc...
【问题讨论】:
-
@FelixKling 感谢您的链接。很有用!
标签: javascript html arrays canvas kineticjs