怎么样在Touch_Start里面屏蔽 Touch_Move

this.node.on(cc.Node.EventType.TOUCH_START, function (event) {
            if(this.gameBoard.isBlocksMoving() == true)
            {
                cc.log("event.stopPropagationImmediate");
                event.stopPropagationImmediate();
                return false;
            }
            this._hasMove = false;
        }, this);

在TOUCH_START设置

event.stopPropagationImmediate();
return false;

还是会传递到Touch_Move里面。

一定要手动在每个事件里面判断一次吗?

 this.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {

            if(this.gameBoard.isBlocksMoving() == true)
            {
                return;
            }
          //do someting
}

另外发现creator里面其它不方便的地方。

  • 1.替换sprite frame的时候需要查找atlas

在sprite中查找其他的属性都可以,但是getComponent(cc.Sprite).atlas得到结果是却是空的。
需要用cc.loadxx加载这个atlas,如果换装游戏更换sprite frame较多,那么就要手动维护很多个atlas索引,这样的功能2dx的cache已经做过了。但是creator没有了。

  • 2

一个编辑好的Node想添加Sprite单色属性。但是只能添加不是单色的Sprite,系统内置的白色default图片又找不到,要么重新编辑一个Node,要么自己找一个纯色的图片。

  • 3

感觉creator里面触摸机制跟2dx的不大一样。以前在touchEnd能做的事情,现在需要在TouchEnd和TouchCancel处理两次。

1赞

目前 API 文档中并没有 atlas 这个属性,我们也不提倡使用,这个属性仅仅是辅助编辑器编辑用的,运行时没什么实际意义。

之后 cache 之类的 API 会慢慢完善起来

挺好的反馈,我们会试着解决这个问题。

谢谢回复。你还没有回答在 怎么样在Touch_Start里面屏蔽 Touch_Move

好像node.on不支持return false屏蔽Touch_Move。你可以使用另一种添加方法,cocos2dx-js原来的:http://www.cocos.com/docs/creator/scripting/player-controls.html,页面下面“单点触摸事件”和“多点触摸事件”。

首先只注册 touchstart 事件,在 touchstart 中判断是否需要监听 touchmove,如果需要的话动态添加 touchmove 和 touchend 事件,在 touchmove 中正常处理,在 touchend 中取消对 touchmove 和 touchend 事件的监听

不建议用这种方法,跟目前的事件系统是完全脱节的,之所以这个方法还存在,是因为我们把原始的这种事件系统作为底层实现,提供系统事件的一种代理而已。

2赞

谢谢回复。

我的touchstart touchmove touchend都是一起注册都是需要的,为了一次不响应去反注册,用了再去往返注册更麻烦。只能在每个事件函数里面判断一遍。
远远没有2dx在touchbegian里面一句return false;来的方便。

这是两种事件系统的思路,2dx 中的事件触点是和 target 无关的,不会针对 target 做归属判断,所以需要自己去显式得声明是否持有这个触点,touch began 中 return true 表示当前 target 拥有这个触点,return false 则表示不拥有。

而在 Creator 中,事件触点会根据 target 的响应区域来自动判断触点的归属,也就是 node 的 _hitTest 函数。那么自然也就不能那么灵活得随意决定触点归属。相对来说,2dx 的事件系统中,你需要自己判断触点是否在节点内,或者你需要的响应区域内,这个则是 Creator 中不需要做的,所以各有其方便之处吧。

嗯 谢谢答疑。 creator不需要手动判断是否需要响应确实方便了很多。