在向我的精灵添加监听器时触发太多事件

时间:2015-10-19 07:11:45

标签: javascript cocos2d-js

我正在尝试用一堆球来创建一个基本的Cocos2d-js示例,我可以点击它来移动。我正在创造这样的球:

        var listener = cc.EventListener.create({
            event: cc.EventListener.TOUCH_ONE_BY_ONE,
            swallowTouches: false,
            onTouchBegan: ballTouchBeganEventHandler
        });

        var BallTile = cc.Sprite.extend({
            ctor: function(image, position)
            {
                this._super();
                var ballSize = g_settings.ballSize;
                this.initWithFile(image, cc.rect(0, 0, ballSize, ballSize));
                this.setPosition(position);
                cc.eventManager.addListener(listener.clone(), this);
            }
        });

        var ball1 = new BallTile(ballImage1, ballPosition1);
        var ball2 = new BallTile(ballImage2, ballPosition2);
        var ball3 = new BallTile(ballImage3, ballPosition3);

问题在于,无论我点击哪个球,该事件都会被触发三次(每个球一次),而不是仅仅点击一次。 我正在为每个球使用相同的事件监听器但是我想象它只会对实际点击的球发射一次,而不是每个球都有一个事件监听器。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

尝试将swallowTouches设置为true,然后确保从true内返回ballTouchBeganEventHandler