Egret社区
初次接触egret和ts/js 做一个小游戏练手。
假设eui中有100个label。id分别是 lab_1  到 lab_100
现在有个方法。
public setlabeltext(int labid,string labtext)
{
这里如何根据labid 快速的得到对应的label 并且设置 text属性。比如如果传入参数是 10 , test则
lab_10.text = test;
}
分享到 :
0 人收藏

4 个回复

倒序浏览
speall  登堂入室 | 2020-12-28 12:00:01
可以这样写:
this["lab_" + labid].text = test;
boyyao  登堂入室 | 2020-12-28 20:31:45
感谢回复。我尝试如下:
在HallUI.ts中我定义如下label
private lab_open1:eui.Label;
并且加如下方法:
public updateinfo(int id){
this["lab_open"+id].text = "test";
// 或者 this["lab_open1"].text = "test";
}
执行后都得到undefined的错误。。

当时但我在浏览器中吧 this["lab_open"+id].text = "test"; 断点下来。
并且手工在浏览器控制台执行this["lab_open1"].text = "test"; 则能成功赋值~
甚是奇怪~~
因为之前用的其他语言较多。对ts/js理解不深。。希望多多指教~
liuyonggen  登堂入室 | 2020-12-29 11:52:26
boyyao 发表于 2020-12-28 20:31
感谢回复。我尝试如下:
在HallUI.ts中我定义如下label
private lab_open1:eui.Label;

并不是语言的问题,是你需要等eui皮肤加载完毕才能使用,你可以在childrenCreated方法里调用你的updateinfo方法试试
boyyao  登堂入室 | 2020-12-29 16:15:49
最后我又测试了一下。似乎和类似作用域的概念有关。也就是可能htis["xxxx"]没有在当前类下找到xxxx。比如按照楼上的方法我能成功调用
updateinfo 并且得到想要的结果后。我再将 updateinfo放入一个匿名函数中。比如:
setTimeout(function(){
       updateinfo(xxxx,xx);
        },3000);
则会出现undefined错误。
不过目前的问题解决了。。非常感谢楼上两位。。正在学习中。以后多多指教~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部