我用JS开发,用UI编辑器设计了一排按键加到场景底部,然后设计多个layer添加到加到LayerMultiplex,再加入场景中部,每个layer添加各自的UI,然后在底部按键的事件中用switchTo切换Layer。
现在chrome运行经常点几下按键就没反应了,有时个别能点,有时全部能点,下断点不产生事件,按钮图片也不切换到按下状态。
cocos2d-js-3.0beta可以用命令编译WIN32和Android,两者运行都正常,按键全部能点击,现在没法调试,求指点原因!
代码如下
var LayerList = {
Home_Layer:0,
Hero_Layer:1,
Group_Layer:2,
War_Layer:3,
Tujian_Layer:4,
Store_Layer:5
};
var MainScene = cc.Scene.extend({
layerArray:null,
onEnter:function () {
this._super();
var size = cc.director.getWinSize();
var home_sprite = cc.Sprite.create(res.HomeBack);
home_sprite.setPosition(size.width/2,size.height/2);
this.addChild(home_sprite);
var Main_Menu = ccs.uiReader.widgetFromJsonFile(res.MainMenu); //main_memu画布大小为640*100
this.addChild(Main_Menu);
var User_Head = ccs.uiReader.widgetFromJsonFile(res.UserHead);
User_Head.setPosition(cc.p(0,size.height-User_Head.getSize().height));
this.addChild(User_Head);
var bt_home = ccui.helper.seekWidgetByName(Main_Menu, "Bt_home");
bt_home.addTouchEventListener(this.touchEvent,this);
var bt_hero = ccui.helper.seekWidgetByName(Main_Menu, "Bt_hero");
bt_hero.addTouchEventListener(this.touchEvent,this);
var bt_group = ccui.helper.seekWidgetByName(Main_Menu, "Bt_group");
bt_group.addTouchEventListener(this.touchEvent,this);
var bt_war = ccui.helper.seekWidgetByName(Main_Menu, "Bt_war");
bt_war.addTouchEventListener(this.touchEvent,this);
var bt_tujian = ccui.helper.seekWidgetByName(Main_Menu, "Bt_tujian");
bt_tujian.addTouchEventListener(this.touchEvent,this);
var bt_store = ccui.helper.seekWidgetByName(Main_Menu, "Bt_store");
bt_store.addTouchEventListener(this.touchEvent,this);
var home_layer = new HomeLayer();
var hero_layer = new HeroLayer();
var group_layer = new GroupLayer();
var war_layer = new WarLayer();
var tujian_layer = new TujianLayer();
var store_layer = new StoreLayer();
layerArray =cc.LayerMultiplex.create(home_layer,hero_layer,group_layer,war_layer,tujian_layer,store_layer);
layerArray.setLocalZOrder(2);
layerArray.setPosition(cc.p(0,100));
this.addChild(layerArray);
},
touchEvent: function (sender, type) {
switch (type) {
case ccui.Widget.TOUCH_BEGAN:
break;
case ccui.Widget.TOUCH_MOVED:
break;
case ccui.Widget.TOUCH_ENDED:
switch (sender.getName())
{
case "Bt_home":
layerArray.switchTo(LayerList.Home_Layer);
break;
case "Bt_hero":
layerArray.switchTo(LayerList.Hero_Layer);
break;
case "Bt_group":
layerArray.switchTo(LayerList.Group_Layer);
break;
case "Bt_war":
layerArray.switchTo(LayerList.War_Layer);
break;
case "Bt_tujian":
layerArray.switchTo(LayerList.Tujian_Layer);
break;
case "Bt_store":
layerArray.switchTo(LayerList.Store_Layer);
break;
}
break;
case ccui.Widget.TOUCH_CANCELED:
break;
default:
break;
}
}
});
用于切换的layer贴一个,都是一样的
var HomeLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.director.getWinSize();
var Home_layer = ccs.uiReader.widgetFromJsonFile(res.HomeLayer); //各个layer中总计加载3个以上的这样的UI切换就不正常了
this.addChild(Home_layer);
return true;
}
});