demo.png
??這里,我要的效果是點擊評論按鈕,彈出下面的評論內容節點,然后選擇其中一個評論,評論區會新增我選中的這條評論.對于朋友圈內容和回復(
CircleTemple.js
)做成了預制模板,并通過約束對內容的改變高度進行的相應的改變.彈出評論選擇的節點是綁定的RepleyScript.js
.??首先,對
CircleTemple.js
處理
onCommentHandle:function(){
var _this = this; //防止this改變
var replyLayer = cc.find("Reply").getComponent("ReplyScript");
replyLayer.passValue({layer:_this,id:this.id});
}, //這里將自己和點擊的哪個id傳過去
在RepleyScript.js
中
properties: {
reply: cc.Node, //這是放置三條評論的節點
label1: cc.Label,
label2:cc.Label,
label3:cc.Label,
content:cc.Node,
content:cc.Node,
fatherLayer:{
default: null,
visible: false,
}
},
onLoad: function () {
this.height = this.reply.height;
this.myData = [{
"coments_id": 1,
"name":"全宇宙最帥的人",
"type": 1, //1代表評論
"contents":"我有一只小毛驢,我從來也不騎,有一天我心血來潮帶他去趕集",
},{
"coments_id": 2,
"name":"全宇宙最帥的人",
"type": 1, //1代表評論
"contents":"啊哈哈哈哈哈哈哈",
},{
"coments_id": 3,
"name":"全宇宙最帥的人",
"type": 1, //1代表評論
"contents":"咿咿呀呀噫噫噫",
}
];
this.label1.string = this.myData[0].contents;
this.label2.string = this.myData[1].contents;
this.label3.string = this.myData[2].contents;
},
passValue:function(param){
this.fatherLayer = param.layer;
var actionBy = cc.moveTo(1.0, cc.p(660,this.height/2-20));
this.reply.runAction(actionBy); //這里是彈出動畫
},
onBtnClick:function(btn){
var height = this.height -10;
var LocationY = btn.getLocationY();
var num = 0;
if(LocationY<(height)&&LocationY>(2/3*height)){
console.log("第一個按鈕");
num = 1;
}
if(LocationY<(2/3*height)&&LocationY>(1/3*height)){
console.log("第二個按鈕");
num = 2;
}
if(LocationY<(1/3*height)&&LocationY>0){
console.log("第san個按鈕");
num = 3;
}
var actionBy = cc.moveTo(1.0, cc.p(660,-this.height/2));
this.reply.runAction(actionBy);
var data = [];
data.push(this.myData[num-1]);
this.fatherLayer.addPassComments(data);
//這里我們將返回的data傳值給CircleTemple.js,直接用fatherLayer調用方法
},
??我們再回到CircleTemple.js
中
addPassComments:function(data){
var _this = this;
_this.commentBj.getComponent('CommentLists').addComments(data);
//這里是我將評論區里的每一行的label做成了預制,然后評論有多少就創建多少,通過這個方法,會新增一條評論,將選擇的內容展示出來
}
這個方法適用于同場景中切換節點后對切換前后節點狀態,以及值的改變進行傳遞.
以上??.