在游戏中,我想添加可拖动的数字1-9,并在拖放事件中调用某些函数。但在循环中,事件不起作用。任何解决方案都很好。
代码如下:
var count = 0;
points.forEach(function(item){
var one = game.add.text(item.centerX, item.centerY, count, this.style);
one.anchor.setTo(0.5)
one.inputEnabled = true;
one.input.enableDrag();
one.input.startDrag(game.input.activePointer);
one.events.onInputDown.add(this.clone, this, 0, one);
one.events.onDragStop.add(this.fixLocation);
count++;
});
这给了我错误:
Phaser.Signal:侦听器是add()的必需参数,应该是一个函数。
这是fixlocation
函数
fixLocation: function(item){
if(rectangle.contains(item.x, item.y)){
itemAdded += 1;
} else{
item.destroy()
}
},
答案 0 :(得分:0)
我的错。 this
内部的foreach
在错误的上下文中出现错误。它是循环的内部。我要做的就是在循环之外调用函数。即:
var count = 0;
var me = this;// get this here
points.forEach(function(item){
var one = game.add.text(item.centerX, item.centerY, count, this.style);
one.anchor.setTo(0.5)
one.inputEnabled = true;
one.input.enableDrag();
one.input.startDrag(game.input.activePointer);
one.events.onInputDown.add(me.clone, this, 0, one); // now call the function
one.events.onDragStop.add(me.fixLocation);
count++;
})