javascript - Cocos2d html5 onTouchEnded 不工作

标签 javascript html cocos2d-js cocos2d-html5

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

cc.eventManager.addListener(
{
    event: cc.EventListener.TOUCH_ALL_AT_ONCE,
    swallowTouches: false,
    onTouchesBegan: onTouchesBegan,
    onTouchesEnded: onTouchesEnded
}, this);

但在这种情况下,我的 onTouchEnded 函数从未被调用过:

cc.eventManager.addListener(
{
    event: cc.EventListener.TOUCH_ONE_BY_ONE,
    swallowTouches: false,
    onTouchBegan: onTouchBegan,
    onTouchEnded: onTouchEnded
}, this);

调试一段时间后,我在 cc.eventManager._onTouchEventCallback 函数中找到了“if”语句:

} else if (listener._claimedTouches.length > 0
    && ((removedIdx = listener._claimedTouches.indexOf(selTouch)) != -1))
{

在我的例子中,“listener._claimedTouches”== 0 并且 if 语句拒绝调用 onTouchMove 和 onTouchEnded 监听器。

有谁知道为什么“listener._claimedTouches”== 0 以及为什么会发生这样的事情?

最佳答案

你应该添加一个“return true;” onTouchBegan 末尾的语句。 onTouchEnd 会在 onTouchBegan 返回 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);

关于javascript - Cocos2d html5 onTouchEnded 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32565258/

相关文章:

javascript - 如何使对象随拖动旋转,如何使用 sin 或 cos 获得围绕原点的旋转点?

cocos2d-js - 如何使用自定义 ttf 显示标签?

javascript - 使用 jquery $.post 调用 post mockjax 服务不返回值

JavaScript:如何将数组值与每个匹配项匹配,而不是与所有匹配项匹配

javascript - 在桌面滚动监听器上

css div 边距移动整个 div 而不是内容

html - 如何将文本宽度与动态大小的图像/标题的宽度相匹配?

javascript - 使用 cocos2d-js 设置 jsbindings 类的正确方法是什么?

javascript - 如何使用 Cocos2D-JS 将变量保存到 Android?

javascript - 导入组件的问题