通知设置 新通知
[LayaAirIDE3] [laya 3.3.2]使用spine动画,关闭快速渲染后就无法显示了
回复LayaAir引擎2D • 1636011110用户 发起了问题 • 1 人关注 • 0 个回复 • 12 次浏览 • 2025-10-09 19:04
[LayaAir3] 3d材质属性动画过渡报错
BUG反馈 • LayaAir大为 回复了问题 • 2 人关注 • 2 个回复 • 849 次浏览 • 2025-10-09 18:50
[LayaAir3] 图片遮罩出现背景3.2.8升级之后
LayaAir IDE • LayaAir大为 回复了问题 • 2 人关注 • 1 个回复 • 1199 次浏览 • 2025-10-09 18:04
[LayaAir3] 新版本3.3.2自动图集能否在本地调试关闭掉,也有BUG
LayaAir引擎2D • 谷主 回复了问题 • 已解决 • 3 人关注 • 3 个回复 • 2458 次浏览 • 2025-10-09 17:58
[LayaAirIDE3] skel骨骼动画播放失败,编辑器预览没问题
BUG反馈 • LayaAir大为 回复了问题 • 2 人关注 • 1 个回复 • 640 次浏览 • 2025-10-09 17:12
[LayaAirIDE3] xcode切入切出声音不播放
LayaAir IDE • LayaAir大为 回复了问题 • 2 人关注 • 1 个回复 • 2381 次浏览 • 2025-10-09 16:15
[LayaAir3] 3.3.2 Sprite3D对象设置坐标失效
BUG反馈 • LayaAir大为 回复了问题 • 2 人关注 • 1 个回复 • 2343 次浏览 • 2025-10-09 15:59
[LayaAirIDE3] 使用3.3.2版本新建未改动的3d shader脚本的材质挂不到3d节点上
BUG反馈 • LayaAir大为 回复了问题 • 2 人关注 • 1 个回复 • 686 次浏览 • 2025-10-09 14:59
[LayaAir3] laya3.3.2版本2D相机下,使用ColorEffect2D有问题
BUG反馈 • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 127 次浏览 • 2025-10-09 14:13
[LayaAir3] 大box套2小box,大box设置Align: Center无效
BUG反馈 • Archangelᴱᴿᴵᑦ 回复了问题 • 2 人关注 • 2 个回复 • 162 次浏览 • 2025-10-09 12:20
[LayaAir3] 更新到3.3.2后好多API都没有了??
LayaAir引擎3D • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 167 次浏览 • 2025-10-09 10:53
[LayaAir3] Gbutton设置TitleWidget误操作后编辑器卡死
BUG反馈 • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 147 次浏览 • 2025-10-09 10:03
[LayaAirIDE3] 我使用拖拽的方式构建了一个注册、登录页面,然后我现在无法实现点击注册按钮跳转到登录页面。注意,是使用场景Scene构建的页面。
回复BUG反馈 • ZmySir 回复了问题 • 1 人关注 • 2 个回复 • 544 次浏览 • 2025-10-09 09:39
[LayaAir3] 在最新版本3.3.2中,在使用摄像头2d的项目中使用后处理,无效
BUG反馈 • 夜猫子 回复了问题 • 2 人关注 • 2 个回复 • 2365 次浏览 • 2025-10-09 09:39
[LayaAir3] TextArea的问题
LayaAir IDE • 173*****903 回复了问题 • 2 人关注 • 3 个回复 • 2323 次浏览 • 2025-10-09 09:39
[LayaAir3] 多Pass下,宏被剔除了
BUG反馈 • Heured 回复了问题 • 1 人关注 • 1 个回复 • 2898 次浏览 • 2025-10-09 19:50
[LayaAir3] 3.3.2 spine打包颜色异常
BUG反馈 • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 2542 次浏览 • 2025-09-30 18:06
[LayaAir3] 3.3.2 native视频播放和ide不一致,且循环有问题
BUG反馈 • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 2400 次浏览 • 2025-09-30 17:30
layanative打包的android项目顺序加载js文件,可能有些js加载后未执行的问题
LayaAir Native打包 • 哎呀嘛N号 发表了文章 • 0 个评论 • 2416 次浏览 • 2025-09-30 09:43
原因:
android项目中apploader.js文件,对js加载有个顺序处理方案,具体代码在Document.uploadScript中
uploadScript(d) {
var _t = this;
d.i = this._loading;
this._loading++;
if (d.src) {
console.log("_downloadAysn:temp.src" + d.src);
window.downloadfile(d.src, false, function (data) {
d._stext = data + "\n//@ sourceURL=" + d.src;
_t._downloadOk(d);
}, function () {
var e = new Event("error");
e.target = e.currentTarget = d.obj;
d.obj.onerror && d.obj.onerror(e);
});
}
else {
d._stext = d.text;
_t._downloadOk(d);
}
}
_downloadOk(d) {
this.scriptTextList[d.i] = d;
for (var i = this._evalNum, len = this.scriptTextList.length; i < len; i++) {
var t = this.scriptTextList[i];
if (!t)
return;
console.log(">>>>>>>>>>>>>>>eval src=" + t.src);
var t1 = Date.now();
window.document["currentScript"] = t.src;
window.evalJS(t._stext);
console.log(">>>>>>>>>>>>>>>>>eval take time:" + (Date.now() - t1));
var e = new Event("load");
e.target = e.currentTarget = t.obj;
t.obj.onload && t.obj.onload(e);
this._evalNum++;
}
if (this._loading == this._evalNum) {
this._loading = this._evalNum = 0;
this.scriptTextList.length = 0;
}
}
上面这段代码中,会有一个问题,如果window.downloadfile触发了下载失败的话,就会导致下载失败的那个文件始终在列表 scriptTextList中是空的,比如:下载0、 1、2、3、4、5这几个js文件,如果1下载失败,那么即使2、3、4、5全部加载完毕,回调_downloadOk方法时,_evalNum始终都是从1开始,在for循环中,scriptTextList[1] 始终都是null,这就导致2、3、4、5这几个js文件即使加载完成了,也无法执行 window.evalJS(js文件内容)。
处理方式:
在确保有这些js文件的前提下,把下载方法单独提出来,加载失败后,每隔500毫秒继续加载,直至加载完成
uploadScript(d) {
var _t = this;
d.i = this._loading;
this._loading++;
this._downLoadFile(d, _t);
}
_downLoadFile(d, _t) {
if (d.src) {
console.log("_downloadAysn:temp.src" + d.src + ", id:" + d.i);
window.downloadfile(d.src, false, function (data) {
d._stext = data + "\n//@ sourceURL=" + d.src;
_t._downloadOk(d);
}, function () {
var e = new Event("error");
e.target = e.currentTarget = d.obj;
d.obj.onerror && d.obj.onerror(e);
setTimeout(_t._downLoadFile, 500, d, _t);
});
}
else {
d._stext = d.text;
_t._downloadOk(d);
}
}
_downloadOk(d) {
this.scriptTextList[d.i] = d;
for (var i = this._evalNum, len = this.scriptTextList.length; i < len; i++) {
var t = this.scriptTextList[i];
if (!t)
return;
console.log(">>>>>>>>>>>>>>>eval src=" + t.src);
var t1 = Date.now();
window.document["currentScript"] = t.src;
window.evalJS(t._stext);
console.log(">>>>>>>>>>>>>>>>>eval take time:" + (Date.now() - t1));
var e = new Event("load");
e.target = e.currentTarget = t.obj;
t.obj.onload && t.obj.onload(e);
this._evalNum++;
}
按照上面这种改法,能确保所有js都正常加载,亲测有效 查看全部
原因:
android项目中apploader.js文件,对js加载有个顺序处理方案,具体代码在Document.uploadScript中
uploadScript(d) {
var _t = this;
d.i = this._loading;
this._loading++;
if (d.src) {
console.log("_downloadAysn:temp.src" + d.src);
window.downloadfile(d.src, false, function (data) {
d._stext = data + "\n//@ sourceURL=" + d.src;
_t._downloadOk(d);
}, function () {
var e = new Event("error");
e.target = e.currentTarget = d.obj;
d.obj.onerror && d.obj.onerror(e);
});
}
else {
d._stext = d.text;
_t._downloadOk(d);
}
}
_downloadOk(d) {
this.scriptTextList[d.i] = d;
for (var i = this._evalNum, len = this.scriptTextList.length; i < len; i++) {
var t = this.scriptTextList[i];
if (!t)
return;
console.log(">>>>>>>>>>>>>>>eval src=" + t.src);
var t1 = Date.now();
window.document["currentScript"] = t.src;
window.evalJS(t._stext);
console.log(">>>>>>>>>>>>>>>>>eval take time:" + (Date.now() - t1));
var e = new Event("load");
e.target = e.currentTarget = t.obj;
t.obj.onload && t.obj.onload(e);
this._evalNum++;
}
if (this._loading == this._evalNum) {
this._loading = this._evalNum = 0;
this.scriptTextList.length = 0;
}
}
上面这段代码中,会有一个问题,如果window.downloadfile触发了下载失败的话,就会导致下载失败的那个文件始终在列表 scriptTextList中是空的,比如:下载0、 1、2、3、4、5这几个js文件,如果1下载失败,那么即使2、3、4、5全部加载完毕,回调_downloadOk方法时,_evalNum始终都是从1开始,在for循环中,scriptTextList[1] 始终都是null,这就导致2、3、4、5这几个js文件即使加载完成了,也无法执行 window.evalJS(js文件内容)。
处理方式:
在确保有这些js文件的前提下,把下载方法单独提出来,加载失败后,每隔500毫秒继续加载,直至加载完成
uploadScript(d) {
var _t = this;
d.i = this._loading;
this._loading++;
this._downLoadFile(d, _t);
}
_downLoadFile(d, _t) {
if (d.src) {
console.log("_downloadAysn:temp.src" + d.src + ", id:" + d.i);
window.downloadfile(d.src, false, function (data) {
d._stext = data + "\n//@ sourceURL=" + d.src;
_t._downloadOk(d);
}, function () {
var e = new Event("error");
e.target = e.currentTarget = d.obj;
d.obj.onerror && d.obj.onerror(e);
setTimeout(_t._downLoadFile, 500, d, _t);
});
}
else {
d._stext = d.text;
_t._downloadOk(d);
}
}
_downloadOk(d) {
this.scriptTextList[d.i] = d;
for (var i = this._evalNum, len = this.scriptTextList.length; i < len; i++) {
var t = this.scriptTextList[i];
if (!t)
return;
console.log(">>>>>>>>>>>>>>>eval src=" + t.src);
var t1 = Date.now();
window.document["currentScript"] = t.src;
window.evalJS(t._stext);
console.log(">>>>>>>>>>>>>>>>>eval take time:" + (Date.now() - t1));
var e = new Event("load");
e.target = e.currentTarget = t.obj;
t.obj.onload && t.obj.onload(e);
this._evalNum++;
}
按照上面这种改法,能确保所有js都正常加载,亲测有效
[LayaAir3] 在最新9月28更新的3.3.2中,在使用摄像头2d的项目中,使用mask功能无效,这个影响比较大啊啊
BUG反馈 • LayaAir小牛 回复了问题 • 2 人关注 • 1 个回复 • 2560 次浏览 • 2025-09-29 19:11