Egret的项目笔记(一)
1.Uncaught TypeError:Cannot set property 'text' of undefined
K:public constructor() {
super();
this.skinName = "xxx/x.exml";
this.addEventListener(eui.UIEvent.CREATION_COMPLETE,this.onComplete,this);
//this.PasswordLabel.text = ""; //会报错1
}
public onComplete(){
this.PasswordLabel.text = "";//解决
}
}
2,项目有后端数据的,在修改名字或者密码等的资料的时候,一定要给服务端发送数据,解析返回数据之后才能判断是否修改完成。
例子:
GameUtil.bitmapToBtn(this.ensure(e) => {
if (this.oldPassword.text == "") {
Toast.show("请输入原始密码");
} else if (this.newPassword.text == "") {
Toast.show("请输入新密码");
} else if (this.ensurePassword.text == "") {
Toast.show("请再次确认密码");
} else {
if (this.oldPassword.text == this.newPassword.text) {
Toast.show("新旧密码一样,请重新设置密码");
} else if (this.oldPassword.text != this.pwd){
Toast.show("请输入正确的原始密码");
}
else {
if (this.newPassword.text != this.ensurePassword.text) {
Toast.show("确认密码和新密码不完全相同,请重新输入");
} else {
//协议
}
}
}
})
建议:一般服务器若是做了判断,此处只需要判断数据不为空即可
注:if else else if 的使用
GameUtil.bitmapToBtn(this.ensureImage, (e) => {
if (this.oldPasswordLabel.text == "") {
Toast.show("请输入原始密码");
return;
}
if (this.newPasswordLabel.text == "") {
Toast.show("请输入新密码");
return;
}
if (this.ensurePasswordLabel.text == "") {
Toast.show("请再次确认密码");
return;
}
if(this.newPasswordLabel.text != this.ensurePasswordLabel.text){
Toast.show("两次密码输入不同,请重新输入");
return;
}
//通信协议
});
//解析返回数据
3,解析返回数据:
4,List:渲染和dataProvider、itemRenderer的顺序关系并不是很大,关键的问题在于数据arr一定要存有数据,不然会显示Object 蓝色底(未有数据)
let arr=[];
this.gList.dataProvider = new eui.ArrayCollection(arr);
this.gList.itemRenderer = X类;
5,枚举
enum gameIndex {
BEGIN,
PLAY,
ADD_SCORE,
PAUSE,
GO_ON,
END
}
K:
gameIndex.BEGIN 代表的是BEGIN的下标 0
gameIndex[0] 代表的是 BEGIN
6,关于toString()的使用
toString方法会返回一个“以文本方式表示”此对象的字符串
Object类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:该对象的字符串表示形式。
注意:toString() 只适用于对象的调用,普通的数据类型不可以调用,这也就是使用包装类的原因
JS中,将数字转换为字符串var
var number=new Number(133);
document.write("The number as a binary valueis:");
document.write(number.toString(2));
使用:(建议选2,因为1需要转换)
this.cLabel.text = this.TotalTime.toString();
this.cLabel.text = this.TotalTime+ "" ;
7,按钮事件
public mybutton:eui.Button;
public onComplete():void{
this.mybutton.addEventListener(egret.TouchEvent.TOUCH_TAP,(e:egret.TouchEvent) =>{
alert("aaaa");
},this);
}
8,this.sLabel.text = state == 0 ? "base" : state == 1 ? "begin" : "playing";
表达式:“()? :”。
()中进行二元运算
?在运算,就形成三元运算符
9,关掉Scroller滑动时候的滚动条:
在scroller下删掉Group,加入一个list容器,之后可以进行设置
this.scoroller.horizontalScrollBar.autoVisibility = false;//隐藏进度条
10,设置exml的按钮上的字体大小
(<eui.Label>this.vBtn.labelDisplay).size = 16;
11,更换背景图片资源
public bg: eui.Image;
let strUrl: string = "name_png";
this.bg.source = RES.getRes(strUrl);
12,字符串重组
let str:string = ""
//去除最后一位
str = str.substring(0, str.length - 1);
this.sLabel.text = str;