向我的精灵添加侦听器时触发太多事件
Firing too many events when adding a listener to my sprites
我正在尝试创建一个基本的 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);
问题是无论我点击哪个球,事件都会被触发三次(每个球一次),而不是被点击的球只触发一次。
我为每个球使用相同的事件监听器,但我本以为它只会为实际点击的球触发一次,而不是每个具有事件监听器的球都触发一次。
我错过了什么?
尝试将 swallowTouches
设置为 true
,然后确保从 ballTouchBeganEventHandler
.
内部设置 return true
我正在尝试创建一个基本的 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);
问题是无论我点击哪个球,事件都会被触发三次(每个球一次),而不是被点击的球只触发一次。 我为每个球使用相同的事件监听器,但我本以为它只会为实际点击的球触发一次,而不是每个具有事件监听器的球都触发一次。
我错过了什么?
尝试将 swallowTouches
设置为 true
,然后确保从 ballTouchBeganEventHandler
.
true