我正在使用CreateJS为对象设置动画。
我想将circle
形状移动到for循环中更改的位置。
var x = {
time: 200,
x: 0,
y: 0
};
每次形状在for循环中设置动画后,我都会更改此变量。
for(var i = 0; i < 4; i++) {
createjs.Tween.get(circle)
.to({x: hits.x, y: hits.y}, hits.time);
hits.x += 200;
hits.y += 200;
}
我将增量值设置为4,但我要更改它。这就是我每次动画时都不直接使用.to
函数的原因。我不想为每一个增量对每个循环进行硬编码。我需要创建一个可以接收任何增量值的函数,并相应地为其设置动画。
我尝试了这个,但后来意识到如果另一个动画正在进行中,动画就不会发生。
然后我使用eval函数将所有值添加到字符串中,然后将其作为一个整体添加,因为.to()
函数是可链接的。
var bounceString = "createjs.Tween.get(circle)";
for(var i = 0; i < 4; i ++) {
bounceString += ".to({x: hits.x, y: hits.y}, hits.time)";
hits.x += 200;
hits.y += 200;
}
bounceString += ";";
eval(bounceString);
通过对字符串使用eval函数,我可以使用任何增量值并相应地设置形状,而无需对其进行硬编码。但是,有一个问题。
我不知道为什么,但它说hits
变量未定义。我还尝试在bounceString
中定义该变量,但它没有成功。我也尝试将它变成一个全局变量(因为整个代码都在一个函数中)。
我尝试在hits
中定义bounceString
时显示的错误是 -
只有在我尝试在字符串本身中定义变量时才会发生这种情况。
我知道eval
函数很危险,但这是唯一的方法。还有其他办法吗?
答案 0 :(得分:0)
我不知道createjs
的API是什么。但是,我希望存储从createjs.Tween.get()
获得的内容然后执行.to()
将比<{1}}更好地远。
请考虑以下代码:
eval()