在一个Layer添加到层上的时候做了如下操作:
new方法创建层,执行层的构造函数:
1.首先是通过new方法创建,最先走的构造函数,ctor 函数,然后将层addChild到层上,在addChild()方法的时候进行了2,3的操作。
addChild()的时候,他们的父亲CCNode,进行了如下操作,执行对应的层上的函数功能:
2.然后是根据层的_running 的状态,则执行 child.onEnter() 操作。
3.如果有过渡动画的话,则进行 if (this._isTransitionFinished) child.onEnterTransitionDidFinish();
所以在层上进行播放音乐的时候,可以在构造方法预先播放音乐,这样就可以达到,界面还没显示出来,但是音乐已经有了,效果体验更佳!!
层的添加和删除,根据树状结构,都是通过消息机制通过controllerLayer.js 去控制的,保证代码的耦合性能。
面向对象,子类可以继承使用基类的方法。
this.removeAllChild();
ListView: ScrollerView;
this.list_battle = getWidget(this.skin,"list_battle"); this.list_battle.addEventListener(this.selectedItemEvent,this); this.list_battle.setTouchEnabled(true); for(var i = 0, len = this._fightShowData.length ; i< len ; i++) { var battleItem = new BattleLayerItem(this._fightShowData[i]); this.list_battle.pushBackCustomItem(battleItem); }
selectedItemEvent: function (sender, type) {
switch (type) { case ccui.ListView.EVENT_SELECTED_ITEM: var listViewEx = sender; var index = listViewEx.getCurSelectedIndex();
var item = listViewEx.getItem(listViewEx.getCurSelectedIndex()); this.onClickListView(item);switch(index){
case 1:
sendCustomEvent(GameUIEvent.JUST_ADD_LAYER,createAddLayerParam(ArenaLayer._CName,listViewEx.getItem(index)));
break;
}
break;
default:
break; }}
BattleLayerItem.js 是继承的 ccui.Layout。、
背包界面:写了四个ccs文件,四个UI文件
继承的cc.Layout
bagTabberUI.js : 处理背包选中的按钮状态,并且设置tag : 物品,英雄,装备。点击不同按钮,通过发送消息重新获取对应的数据管理。
bagDetialsUI.js : 一个物品的详细信息!
bagTopUI.js : 人物头像,金币刷新显示,钻石刷新显示!
bagListUI.js : 中间物品的显示。
webStorm 回退快捷键 ctrl + Alt + <- ;
js文件回退快捷键是 ctrl + 鼠标左键
cocos studio 导出来的文件,控件的touchEnabled() 默认是false,这点需要注意,如果想使用touchEnabled 为true,则需要对该
控件设置setTouchEnabled(true);