您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x html5笔记 - 点击事件的处理

2013-05-29 11:07 253 查看
按钮创建:
var item1 = cc.MenuItemImage.create("a.png","a_selected.png",function(){ cc.log("a is click")},this);var item2 = cc.MenuItemImage.create("b.png","b_selected.png",function(){ cc.log("b is click")},this);
//不要用console.log,除非你不想用js binding
//创建好的要放到Menu中,否则不会被注册到事件代理中var menu = cc.Menu.create(item1);//还可以这样menu.addChild(item2,1);//最后把菜单放到当前场景中this.addChild(menu,2);
事件屏蔽:所有菜单创建时,优先级是:cc.MENU_HANDLER_PRIORITY当场景中出现需要屏蔽的菜单按钮时,你可以将可以点击的菜单置于更优先的位置:this._m_pMenu.setTouchPriority(cc.MENU_HANDLER_PRIORITY - 2);
然后通过这样把此层一下的事件全部屏蔽掉:cc.registerTargettedDelegate(cc.MENU_HANDLER_PRIORITY - 1, true, this);
当然,在你离开的时候需要:cc.unregisterTouchDelegate(this);
原理:Coco采用html中的事件冒泡机制,但冒泡的顺序可以自己设定,Priority越小代表层次越高,Menu最小=128,比这个更小的就可以把Menu都更优先处理。
cc.registerTargettedDelegate:意为”有目标对象的事件代理”,区别于“标准事件代理”一旦调用,当前所有Touch事件会经过判定处理,可以传的三个参数:(priority, passabel, delegator)作用:当TouchPriority符合priority时,可以根据passable来选择该事件处理是否为冒泡阻塞机制,只处理delegator中的事件。
若onTouchBegan:return false 则屏蔽事件往下层传递,否则事件将会被传入下一层
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐