我在循环内的多个项目上添加以下补间。我想要的是在补间完成后杀死每个项目。为此,我想知道如何在onComplete回调函数中获取补间对象所引用的对象的引用。提前致谢。 :)
var tween = game.add.tween(item.scale).to({
x: 1.3,
y: 1.3
}, 100).to({
x: 1,
y: 1
}, 100).start();
tween.onComplete.add(function(){
//item.kill(); Need to get the object of the tween to kill here!!
}, this);
答案 0 :(得分:2)
onComplete包含的第一个值是补间的目标:
tween.onComplete.add(function(sprite, tween) { sprite.kill(); }, this);
第二个是对Tween对象本身的引用。
答案 1 :(得分:0)
所以我想出了另一种解决方案。我以为我和大家分享了。它非常酷,并且由于封闭而实现。 :)
这种方式将项目传递给另一个函数,该函数最初位于父函数的循环中,现在具有自己的范围,并且该范围内的补间可以轻松地操作该项目。
以下是可能有用的代码段:
killEm: function(){
for(var i = 0; i < 10; i++){
var item = getItem(i);
this.animateAndKill(item);
}
},
animateAndKill(item){
var tween = game.add.tween(item.scale).to({
x: 1.3,
y: 1.3
}, 100).to({
x: 1,
y: 1
}, 100).start();
tween.onComplete.add(function(){
item.kill(); //Local item, you are mine now!! :)
}, this);
}
每次循环在第一个函数中运行时,第二个函数会创建一个单独的作用域,并为每个作用域提供一个项目和一个可以访问该项目的补间。现在我可以直接杀死该项而不用担心如何在onComplete回调中获得对目标的引用。那很有趣!! :)