Cocoscreator如何制作评论的功能
一、从服务器接受到的json串进行解析读取,我的上一篇博客已经介绍了怎么操作。
二、在creator中制作一个预制体,内容大致是你设计的评论是什么样子(头像,昵称,时间,评论内容等)
注意:预制体要放在resources文件夹里面三、对预制体添加一些自己需要的组件,然后用cc.loader.loadres将其加载出来,再用cc.instantiate()将其实例化出来。接下来就可以通过代码对其进行操作了。
//加载输入框的预制体
cc.loader.loadRes("EDbox",cc.Prefab,function(err,box){
var pl=cc.find("Canvas/scroll/view/content");
var shuru=cc.instantiate(box); //实例化
shuru.name="btn";
shuru.anchorX=0.5
shuru.anchorY=0.5 //设置锚点
pl.addChild(shuru); //p1节点为其父节点
})
四、将接收到的json格式的数据填进预制体中,因为加载预制体是异步加载,所以写在同一个代码里面会出问题,我是这么解决的:
1、将接受的json数据填进实例化后的预制体中的操作写成一个函数,然后导入为插件
```javascript
function one(i){
//在场景加载时请求数据
var y=jieshou("http/liqi/mp3")
var obj = JSON.parse(y);
cc.log(obj)
let result=obj.result
cc.log(result);
var m=result[i]
cc.log(m);
var Comment=result[i].Comment;
var PictureNumber=result[i].PictureNumber;
var PersonalNickName=result[i].PersonalNickName;
var CommentTime=result[i].CommentTime
cc.log(Comment,PictureNumber,PersonalNickName,CommentTime)
cc.loader.loadRes("EDbox",cc.Prefab,function(err,pre){
//加载预制体,添加进content
var p2=cc.find("Canvas/scroll/view/content");
var BetweenShuru=cc.instantiate(pre);
// BetweenShuru.name="BTS";
BetweenShuru.anchorX=0.5
BetweenShuru.anchorY=0.5
p2.addChild(BetweenShuru);
//将内容填进去
BetweenShuru.getComponent(cc.EditBox).string=Comment;
//将头像填进去
var self=BetweenShuru.getChildByName("touxiang")
cc.loader.loadRes(PictureNumber, cc.SpriteFrame, function (err, sf) {
self.getComponent(cc.Sprite).spriteFrame = sf;
})
//将昵称填进去
var ni=BetweenShuru.getChildByName("nicheng");
ni.getComponent(cc.Label).string=PersonalNickName;
//将时间填进去
var time=BetweenShuru.getChildByName("time");
time.getComponent(cc.Label).string=CommentTime;
})
}
2、在挂在评论场景canvas上的脚本组件中调用这个函数,这样就可以把每个用户的每一条评论都加载出来,写在onload可以在每次场景加载时调用。
onLoad:function(){
//在场景加载时请求数据,加载评论的字段
var y=jieshou("http/liqi/mp3")
var obj = JSON.parse(y);
cc.log(obj)
let result=obj.result
cc.log(result);
for(let i=0;i<result.length;i++)
{
one(i);
}
},
总结:大致思路就是,接收到json格式数据—读取json的内容----将预制体实例化出来—对每一串json数据与每一个预制体匹配