simdm
August 30, 2012, 3:56pm
#1
I can click layer1’menu in About layer ? bug?
No problem with same code in cocos2d.
code:
layer1:
var about = cc.MenuItemImage.create(
s_AboutNormal,
s_AboutSelected,
this,
function () {
var about = new AboutLayer();
credits.init();
this.addChild(about, 8, 5);
});
var menu = cc.Menu.create(play, about, null);
About:
var AboutLayer = cc.LayerColor.extend({
init:function () {
this.setTouchEnabled(true);
………………
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, cc.MENU_HANDLER_PRIORITY + 1, true);
},
onTouchBegan:function (touch, event) {
return true;
}
});
I don’t understand that what is your question?
please paste your complete game code. thanks!
function () {
var about = new AboutLayer();
credits.init();
this.addChild(about, 8, 5);
}
“this” pointer maybe is changed, please be careful!
simdm
August 31, 2012, 4:49am
#3
这个用英文比较难说名,中文吧。。。
我在一个layer添加一个CCMenu,然后又添加了一个CCLayerColor,CCLayerColor在CCMenu之上。
CCLayerColor我设置成了半透明了的。按理说CCLayerColor盖在了CCMenu之上,但是依然能触发CCMenu的触屏事件。
下面的代码是我类似游戏的cocos2d改过来的,在aboutlayer上也加了相应的事件处理了。
code:
layer1:
`var about = cc.MenuItemImage.create(
s_AboutNormal,
s_AboutSelected,
this,
function () {
var about = new AboutLayer();
credits.init();
this.addChild(about, 8, 5);
});
var menu = cc.Menu.create(play, about, null);`
AboutLayer:
`var AboutLayer = cc.LayerColor.extend({
init:function () {
this.setTouchEnabled(true);
…
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, cc.MENU_HANDLER_PRIORITY + 1, true);
},
onTouchBegan:function (touch, event) {
return true;
}
});`
You can reference Testcase code in tests/MenuTest.
In this TestCase, a MenuItem can disable all Menu’s touch event. good luck!
simdm
August 31, 2012, 3:31pm
#5
我想问的其实是在layer上加上一层后,通过什么方式能不在触发下层的控件,本层就把所有触摸吞掉。
在cocos2d上下面类似的代码就可以在本层吞掉所有的触摸,不会在触发下面层的控件,
请问要在cocos2d-html上怎么实现?
`var AboutLayer = cc.LayerColor.extend({
init:function () {
this.setTouchEnabled(true);
…
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, cc.MENU_HANDLER_PRIORITY + 1, true);
},
onTouchBegan:function (touch, event) {
return true;
}
});`
simdm
September 2, 2012, 10:17am
#6
resolved,create new Meun from cc.Layer………