移相器拖放多个文本项

时间:2018-08-04 11:14:52

标签: javascript phaser-framework

在游戏中,我想添加可拖动的数字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()
        }
    },

1 个答案:

答案 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++;
            })