我在实现一个功能的时候遇到了一个问题,希望各位大大能帮忙解答。
功能如下:有一个独立的信息窗口,其绑定的脚本提供一个方法可以动态生成信息,而其他类似按钮的组件可以通过访问这个方法来生成相应的信息。现在问题来了 ,每次游戏开始时的第一次调用信息生成方法必定不会生成信息,而第二次调用方法则会显示出第一次调用所产生的信息,以此类推。
下面贴出我的代码,一共三个脚本(其中一个为调用脚本,另外两个即为官方教程中的动态内容生成脚本):
**Button,js**//调用脚本
collectStone:function(){
this.sendMassage("收集石头");
},
...
sendMassage : function( massageName ) {
var massageAreaControl = cc.director.getScene().getChildByName("massageArea").getComponent("massageAreaControl");//获取独立窗口绑定脚本
massageAreaControl.createAMassage(massageName);//调用信息生成函数
},
**massageAreaControl.js**//信息生成脚本,即为官方教程中的ItemList
properties: {
massageBox:cc.Node,//layout窗口
massagePrefab:cc.Prefab,
},
...
createAMassage : function( massageName ){
this.massageData = JSON.parse(cc.sys.localStorage.getItem("massageData"));//获取JSON
for(var i = 1;i < this.massageData.length; i++){//遍历数据
if(this.massageData[i].name === massageName){//如果找到对应信息则进行内容生成
var item = cc.instantiate(this.massagePrefab);
var data = this.massageData[i];
this.massageBox.addChild(item);//在layout中生成数据
item.getComponent("massageTemplate").init({
id : data.id,
content : data.content,
})
break;
}
}
},
**massageTemplate.js**//即官方教程中的Template脚本
properties: {
massageLabel : cc.Label,
id : 0,
},
init : function( data ){
this.id = data.id;
this.massageLabel.string = data.content;
},