通过游戏代码 学习笔记

0,当在一个页面上想要用另一页面上面的变量时(不能使用重新new的对象的情况下),可以将该变量声明为静态变量或者在一个页面中,重新声明一个变量使其等于要获取的另一个页面的那个变量。

1,return ;  :如果是void类型函数,相当于终止函数执行;

2,通过get 定义的方法,在调用的时候,也不需要加括号:

例如:public get startAnimation(){}   再调用时,只要xxxxx.startAnimation 即可;

3,Resdepot 是将将 TextMerger 打包压缩后的 合图 导入到egret项目里的软件,导入时可能遇到 导入时的路径缺失的情况,原因是没有将打包过来的 json文件和png图片 复制到项目里 的resource/assets/Image/ui的文件夹下,复制后,再将合图拖到 Resdepot中 ,即显示 路径 了;

4,好不容易通过Resdepot 将合图导入到项目了,但是项目中 的 exml文件中原来都设计好的素材都消失不见了,什么原因呢?

很可能是你在使用TextMerger打包合图的时候,不小心将 左下角的“ 附加扩展名” 选中了。将它取消选中 再重新打包,导入,项目中的 exml文件就会恢复到原来的模样了。

Resdepot导入素材时,可能在项目文件default.res.json中出现 黄色的警告提示,找不到路径解析错误之类的,原因可能是你的素材png图片和json文件在导入之前放的地方不对,不能随意放,应该将两个格式的文件一起放在项目的resource/asset/文件夹下,然后再拖拽到Resdepot中导入到项目中,此时就不会报黄色警告了

5,egret项目运行后,效果图中不显示exml文件素材,主要的原因是资源组加载的问题,资源组的路径或位置不对;

除此之外,素材不完全显示,例如背景,图片都显示了,但是按钮不显示,原因可能是:文件中缺少加载按钮皮肤的相关代码:

如:this.btn.skinName = "按钮皮肤exml文件的路径";

6,项目中,有时按钮上不单单是文字,还有其他的图标如元宝,数量之类的,此时,最好将这按钮上面的所有元素包括按钮声明为一个组,这样给按钮添加事件的时候会方便;但是,但是,但是,声明为组的元素,要注意它(此处指按钮)的锚点的位置和本身的宽高,否则,如果是两个并列的按钮,第二个按钮 的组会覆盖第一个,如此加事件的时候,就会有诸如事件加不上的问题了;

7,运行egret项目 出现报错:  Uncaught TypeError: clazz is not a constructor

原因是 相应的项目文件加载的exml文件的名字可能有问题;

8,在运行egret项目时,有时会在控制台报错“找不到入口文件 Main.ts”这类的错误,此时重新编译引擎,调试项目便可解决错误;

9,游戏代码中,有时在使用一些项目文件,如Utils.ItemRenderBase来添加一个一个的条目时,多个条目可能会出现下边的条目将上边的条目覆盖上,此时只需要在构造函数中,设置条目的宽度和高度,即可;

而如果使用的是白鹭引擎自带的eui.ItemRender类的话,只需要在exml文件中的DataGroup容器的一个属性“布局”设置成垂直布局即VerticalLayout,同时将布局中的“间隙”属性,设置一个数值,即可解决条目覆盖的问题;

 10,当一个变量的值被设置成字符串形式,但赋值时又想将其设置成数字,例如:

private m_numText:eui.Label;      //文字形式

this.m_numText.text = 1 + "";      //这样才可以将其设置成1,如果不加双引号,则会报错;

11,有时在egret项目运行时报错“某些变量未定义”,原因之一是有时可能是确实未定义,原因之二可能是,资源未加载完,就对其进行了调用,此时可以使用判断 if(this.loadcomplete){ this.initData(); //执行设置数据的方法},  或者    if( !loadComplete ){  return; }  this.initData() ;  //注意是!loadComplete 不是loadComplete == false ,虽然loadComplet是布尔变量,但要用  非号 !

publi get data(){
  return this.m_info1;
}
public set data(param1: any) {
// super["data"] = param1; this.m_info1 = param1 as model.MerchantToolInfo; if (this.m_info1 == null) { return; } if (!this.loadComplete) { return; } this.initData(); }

 12,在使用exml文件的egret项目文件中,有时利用到按钮,按钮也添加了相应的事件,如点击事件,但是运行时,点击按钮却没反应,可能的原因之一是,按钮在exml文件中的层级位置没有放在最上层,按钮只有放在最上层时,点击效果才能实现;

13,egret项目中,有时报错 某个属性未定义,“XXXX”is undefined  其实原因并不是真未定义,可能是调用方法时方法未使用bind绑定,如直接调用this.method,使用 this.method.bind(this)就不会报错未定义了

原文地址:https://www.cnblogs.com/RitaLee/p/6400011.html