Iva*_*nko 2 javascript html5 cocos2d-html5 cocos2d-js
在我的简单项目中,我使用触摸事件来更改按钮状态:在这种情况下,一切正常
cc.eventManager.addListener(
{
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
swallowTouches: false,
onTouchesBegan: onTouchesBegan,
onTouchesEnded: onTouchesEnded
}, this);
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下我的onTouchEnded函数从未被调用过:
cc.eventManager.addListener(
{
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: false,
onTouchBegan: onTouchBegan,
onTouchEnded: onTouchEnded
}, this);
Run Code Online (Sandbox Code Playgroud)
经过一段时间的调试后,我在cc.eventManager._onTouchEventCallback函数中找到了"if"语句:
} else if (listener._claimedTouches.length > 0
&& ((removedIdx = listener._claimedTouches.indexOf(selTouch)) != -1))
{
Run Code Online (Sandbox Code Playgroud)
在我的情况下,"listener._claimedTouches"== 0并且if语句拒绝调用onTouchMove和onTouchEnded侦听器.
有没有人知道为什么"listener._claimedTouches"== 0以及为什么会发生这样的事情?
小智 6
你应该添加一个"return true;" 在onTouchBegan结束时的声明.当onTouchBegan返回true时,将触发onTouchEnd.
var listener = cc.EventListener.create({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches:false,
onTouchBegan: function(touch, event) {
return true;
},
onTouchEnded: function(touch, event) {
//do sth.
}
});
cc.eventManager.addListener(listener, this);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |