同一场景中不同节点中传值(cocosCreator)

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做成了预制,然后评论有多少就创建多少,通过这个方法,会新增一条评论,将选择的内容展示出来
    }

这个方法适用于同场景中切换节点后对切换前后节点状态,以及值的改变进行传递.

以上😝.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,939评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,196评论 4 61
  • 久违的逛街之后,在寒风中单薄的放置过长时间给我带来的是一点点小感冒,感冒不重要,一个热水澡大概就会好,当时的这样想...
    晓言G阅读 495评论 0 0
  • 《那些年》:这部电影看了有三遍,每看一遍我都想时光倒流,我想重新回到过去,把这一切扭转乾坤。曲终人散,梦终究是要醒...
    何雅琴9527阅读 401评论 1 0
  • 这学期,我碰见了一个不一样的他,也遇见了一个不一样的自己。我喜欢这时的他,却恨如今的自己。不知道为什么就莫名的抑郁...
    清墨识人阅读 206评论 0 0