Laya Note 常见Bug及解决方法,Laya常用API, 资源加载,getChildAt()有Bug,用this._children[0].visible = false替代

//****************************************** 1)搭建Http服务器 ******************************************//

$ npm i -g http-server
$ http-server ./
TypeError: Laya.Templet is not a constructor
laya.core.js:17243 TypeError: Laya.Templet is not a constructor
【错误原因】:项目少了一个laya.ani.js类库导致,进入编辑模式,按快捷键F9进入项目设置,选择类库设置,将laya.ani.js勾选即可。
【解决方案】按F9 勾选类库 laya.ani.js
Laya Note 常见Bug及解决方法,Laya常用API, 资源加载,getChildAt()有Bug,用this._children[0].visible = false替代_第1张图片

//********************************************** getChildAt()有Bug,用this._children[0].visible = false替代 ************************//
this.scene.bg._children[0].visible = false;

//********************************************** getUint16 error - Out of bounds *********************************************************//
Uncaught getUint16 error - Out of bounds
laya.core.js:18126 Uncaught getUint16 error - Out of bounds
【错误原因】:龙骨动画太长还是无用数据太多
【解决方案】:1) 把所有动画 只保留0到1帧
2) 如果是龙骨动画,就在后面加上 Laya.loader.load(“ani/jingbubeipi.sk”,Handler.create(this,asd),null,Loader.BUFFER); Loader.BUFFER 相当于预加载,在预加载动画时这样在后面参数加上loader.buffer;

//********************************************** Laya.loader.getRes() undefined *********************************************************//
Laya.loader.getRes() undefined
【错误原因】:Laya.loader.getRes() 获取的资源必须先预加载
【解决方案】:使用Laya.loader.load(“ani/jingbubeipi.sk”,Handler.create(this,asd),null,Loader.BUFFER); Loader.BUFFER 相当于预加载
在预加载动画时这样在后面参数加上loader.buffer;

//********************************************** 资源预加载 *************************************************************************//
const res = [
{url : “image/start/bg-loading.jpg”, type : Laya.Loader.IMAGE},
{url : “image/start/beat.png”, type : Laya.Loader.IMAGE},
{url : “image/start/progress_preload.png”, type : Laya.Loader.IMAGE},
{url : “image/start/progress_preload$bar.png”, type : Laya.Loader.IMAGE},
{url : “skeleton/loadsk.png”, type : Laya.Loader.IMAGE},
{url : “skeleton/loadsk.sk”, type : Laya.Loader.BUFFER},
{url : “image/start/txt-notice.png”, type : Laya.Loader.IMAGE},
{url : “sound/bgm.mp3”, type : Laya.Loader.SOUND}
];
Laya.loader.load(res, Laya.Handler.create(this, this.init));
laya.debugtool.js
var Browser=laya.utils.Browser;//
laya.debugtool.js:5 Uncaught ReferenceError: laya is not defined
Uncaught Can not find class laya.html.dom.HTMLDivElement
laya.core.js:20878 Uncaught Can not find class laya.html.dom.HTMLDivElement
image.png
编辑模式下使用【F9】项目设置中类库设置,选中laya.html.js后确认引入类库。接着使用【F8】编译项目,编译成功后查看/bin/index.js文件中是否已经添加了laya.html.js。

经过上述操作后,laya.html.dom.HTMLDivElement错误仍然存在。

TypeScript 实现日志

export default class Log{
constructor(){}
public static trace(…args:any[]){
console.log.apply(console, args);
}
}

//************************************************* 《《《《 Laya 》》》》**************************************************//
1)如果在 继承自 UI.xxxUI的场景的脚本中 使用Laya.timer.once 和Laya.stage. 等都无效 要换成 this.timer.once 和this.stage.等
2) 示例里面的代码 复制下来后不管用的话 就加上 Laya. 如果报错 “Laya”仅指类型,但在此用作命名空间。 就把var t:
Laya.Texture的Laya.Texture 删除掉,手打一个 Texture 就好了
3)如果获取不到子物体 就用 _childRen[0]等等获取
4)【节点的宽高一定要设置】 如果代码修改个某个节点的位置,大小没有效果,就是编辑器里面没有设置 节点的宽高 ,这个宽高必须要设置,要不然代码不会有效果 ,这样的话,设置为多少运行后节点都不会改变大小,改变位置的时候也可以 用锚点anchorX ,anchorY做更改 siki学院2D赛车有过填坑,自己部落战争也有过填坑
5)

Laya
新建脚本只能放到src子文件夹下,不能放到根目录下(放到根目录下是需要在GameConfig.ts里面注册的(例如 reg(“LoadingCircle.ts”,LoadingCircle) )),新建模板脚本只有2.30之前有,

如果在Ts中写代码 没效果 1)打开的修改代码的代码编辑器不是对象的项目的。2)编译出错,ts没有编辑到bundle.js中

//***************************unity 发布Laya的3D场景 .ls *******************************************//
Export tool 就是发布视图,
报错【Uncaught Error: MeshReader: unknown mesh version】Unity发布3D的Laya场景 .ls 对应的Laya版本,使用对应的LayaUnityplug插件,不然会报错【Uncaught Error: MeshReader: unknown mesh version】
把unity场景的材质都换成 LayaAir3D->Mesh里面和unity对应材质的材质,比如Unity的standard材质 对应LayaAir3D的Mesh的PBR(standard)

报错11111 【 clas not a constructor】 自动生成的laya.core.js有问题,删除并换了一个正常的,就能运行正常了
报错22222) 【 Cannot find module ‘gulp’】
报错33333) 【Cannot read property ‘regClass’ of undefined 】 类库问题 可能是 d3 physical3D UI 等类库 或者直接把好的lib文件夹换上

11) 如果 报错 gulp 这表示发布构建的 工具链有问题, 考虑提升版本,

//************************************************* Laya is not defined *************************************************//
报错 laya.wxmini.js undefuned

  1. 报错:Uncaught ReferenceError: Laya is not defined
    解决:在game.js 的第一行即require的最开始的位置,再添加一个require(“libs/laya.core.js”); 如果bin的里面没有game.js 就加入到发布后的微信包"undefined"!=typeof wx判断里面的game.js里面
    勾选 再文件-项目-发布旧版 里面 勾选 【【】是否只复制index.html内引用的js文件】 在game.js 再添加一个require(“libs/laya.core.js”);

//******************************* Class constructor Da cannot be invoked without ‘new’ at new N *****************************************//
2)报错&

你可能感兴趣的:(Laya Note 常见Bug及解决方法,Laya常用API, 资源加载,getChildAt()有Bug,用this._children[0].visible = false替代)