如何在Phaser.io的onComplete回调函数中获取tween作用的对象?
How can I get the object on which the tween in acting inside the onComplete callback function in Phaser.io?
我在一个循环内的多个项目上添加了以下补间。我想要的是在补间完成后杀死每个项目。为此,我想知道如何在 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);
onComplete 包含的第一个值是补间的目标:
tween.onComplete.add(function(sprite, tween) { sprite.kill(); }, this);
第二个是对 Tween 对象本身的引用。
所以我想出了一个替代解决方案。我想我把它分享给大家。由于闭包,它非常酷并且实现了。 :)
- 将项目(从父范围)传递到另一个函数,该函数将处理设置补间并添加 onComplete 回调。
- 在 onComplete 回调函数中直接引用现在在本地范围内的项目。
通过这种方式将项目传递给另一个函数,该函数最初在父函数的循环中,现在有自己的范围,并且该范围内的补间可以轻松地操作项目。
这是一个可能有用的代码片段:
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 回调中获取对目标的引用。那很有趣!! :)
我在一个循环内的多个项目上添加了以下补间。我想要的是在补间完成后杀死每个项目。为此,我想知道如何在 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);
onComplete 包含的第一个值是补间的目标:
tween.onComplete.add(function(sprite, tween) { sprite.kill(); }, this);
第二个是对 Tween 对象本身的引用。
所以我想出了一个替代解决方案。我想我把它分享给大家。由于闭包,它非常酷并且实现了。 :)
- 将项目(从父范围)传递到另一个函数,该函数将处理设置补间并添加 onComplete 回调。
- 在 onComplete 回调函数中直接引用现在在本地范围内的项目。
通过这种方式将项目传递给另一个函数,该函数最初在父函数的循环中,现在有自己的范围,并且该范围内的补间可以轻松地操作项目。
这是一个可能有用的代码片段:
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 回调中获取对目标的引用。那很有趣!! :)