CocosCreator--跨场景传输输入框内容

刚玩cocoscreator几个星期,突然想做一个软件就是在前一个场景输入内容然后按下确认键,然后切换场景并可以获取到内容进行处理。

本来我感觉这个应该是一个超简单的东西,但是没有只学过一点点C++、pyhthon的我感觉无从下手。

总结了一下,发现实现的方法有很多:

1.用回调函数实现(暂时没搞明白,先不写);

2.定义一个常驻节点并挂载脚本实现(cocos切换场景会自动销毁原场景,所以可以通过常驻节点来做一些操作);

3.单独创建一个ts脚本类来传输(用单例模式保证节点一直发挥作用);

4............

这里介绍第三种方法:

首先,创建一个新的ts脚本,把里面清空;

export default class my_data{                 //export default class表示这是一个可导入的脚本

    static data:string[] = [];                            //创建静态数组存储数据

    private static my_data:my_data;             //准备创建一个单例模式

   

    my_data(){ if(!my_data.my_data){                                //判断是否存在本单例模式实例

            my_data.my_data = new my_data();}

        return my_data.my_data; }

//接收发送过来的输入框信息

    set_data(arr:string[]){

        my_data.data = arr;}

//获取输入框信息

    get_data(){

        return my_data.data; }}

在需要用到传送数据的脚本顶部输入:

import my_data from './单例模式脚本名字';        //即导入了脚本

然后通过:

data = new my_data();                                //即实例化了单例模式

实例化之后就可以通过 data.get_data() \ data.set_data(arr)     使用里面的方法;

获取输入框内容:

创建一个新的脚本挂载在所有输入框的父节点上:

arr:string[] = [];                                                //创建字符串数组存储输入框内容

set_txt(){ for(let a in this.node.children){         //收集输入框的信息

            let txt:string = this.node.children[a].getComponent(cc.EditBox).string;    //输入框内容

            this.arr[a] = txt;                                          //存储内容

data.set_data(arr) ;        }                                   //发送数组

然后通过类似方法创建一个切换场景的脚本,并绑定到按键上,就可以实现传输数据和切换场景了;

然后在下一个场景的脚本上同样导入单例模式脚本,通过        **.get_data()  方法获取得到前面输入框内容的数组啦!

本人对Java、typescript不是很掌握,或许上述方法看起来没有那么舒服流畅,欢迎大佬们能够告诉我更多好用的办法!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值