zoukankan      html  css  js  c++  java
  • 通过游戏代码 学习笔记

    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)就不会报错未定义了

  • 相关阅读:
    关于管理单元初始化失败的解决方法
    如何快速在两台电脑之间传输大文件
    拿到商标受理通知书就可以打上“TM”就可以使用吗?
    山里王土蜂蜜
    我的博客今天1岁344天了,我领取了新锐博主徽章
    Winxp Stop c0000218 unknown hard error
    设置网易博客、新浪博客、博客园的windows live writer帐户支持
    邮件变成了Winmail.dat
    outlook 2007 .pst文件过大,提示:“磁盘空间已满,无法删除邮件”
    git 本地给远程仓库创建分支 三步法
  • 原文地址:https://www.cnblogs.com/RitaLee/p/6400011.html
Copyright © 2011-2022 走看看