Javascript Cocos2d html5 OnTouched不工作

Javascript Cocos2d html5 OnTouched不工作,javascript,html,cocos2d-js,cocos2d-html5,Javascript,Html,Cocos2d Js,Cocos2d Html5,在我的简单项目中,我使用触摸事件更改按钮状态: 在这种情况下,一切正常 cc.eventManager.addListener( { event: cc.EventListener.TOUCH_ALL_AT_ONCE, swallowTouches: false, onTouchesBegan: onTouchesBegan, onTouchesEnded: onTouchesEnded }, this); 但在本例中,从未调用过我的OnTouched函数: c

在我的简单项目中,我使用触摸事件更改按钮状态: 在这种情况下,一切正常

cc.eventManager.addListener(
{
    event: cc.EventListener.TOUCH_ALL_AT_ONCE,
    swallowTouches: false,
    onTouchesBegan: onTouchesBegan,
    onTouchesEnded: onTouchesEnded
}, this);
但在本例中,从未调用过我的OnTouched函数:

cc.eventManager.addListener(
{
    event: cc.EventListener.TOUCH_ONE_BY_ONE,
    swallowTouches: false,
    onTouchBegan: onTouchBegan,
    onTouchEnded: onTouchEnded
}, this);
经过一段时间的调试,我在cc.eventManager中找到了“if”语句。\u onTouchEventCallback函数:

} else if (listener._claimedTouches.length > 0
    && ((removedIdx = listener._claimedTouches.indexOf(selTouch)) != -1))
{
在我的例子中,“listener.\u claimedTouches”==0,if语句拒绝调用onTouchMove和onTouchEnded侦听器

有人知道为什么“listener.\u claimedTouches”==0以及为什么会发生这样的事情吗?

您应该在报告末尾添加一个“return true;”语句。onTouchEnd将在OnTouchStart返回true时触发

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);

我看不出这段代码有任何问题。你能上传整个代码看看有什么问题吗?此外,我通常在侦听器中将我的函数称为this.nameFunction。我不认为这是解决方案,因为应该在范围内,但只是以防万一。有时候js中的作用域会产生误导。是的,这是文档中提到的正确答案。干得好,斯文!