[LayaAir3]3.3.0-beta.4已知新bug汇总

我们项目从3.3beta3开始用起, 做了几个小项目, 下面是使用3.3当中遇到的一些问题和升级beta4的一些bug, 升级beta4的先列出(目前只说遇到的, 后续发现再持续记录)
1. Scene.open
我们使用这个打开常见会传递参数, beta4中, 没有将params传递到onOpened响应函数中
下面是临时补救的shim
if (Laya.LayaEnv.version == "3.3.0-beta.4") {
Scene.open = function (url: string, closeOther?: boolean, param?: any, complete?: any, progress?: any): Promise<Laya.Scene> {
if (typeof (complete) === "function") {
progress = complete;
complete = null;
}
if (typeof (param) === "function")
complete = param;

if (progress instanceof Handler) {
let h = progress;
progress = (value: number) => h.runWith(value);
}
// @ts-ignore
return Scene._load(url, progress).then(scene => {
scene.open(closeOther, param);

if (complete instanceof Handler)
complete.runWith(scene);
else if (complete)
complete(scene);

return scene;
});
}
}
2.长音频播放暂停和恢复
触发流程是 先play播放, 然后pause暂停, 后续使用resume无法恢复播放(WebAudioChannel)
看代码是 onPause 时 reset了, 清除了当前的    _sourceNode, resume的时候检查没有就return了
 
 
3.3使用有问题的地方(可以用, 但是有问题)
1. 序列帧的offset, 设置时间会影响最终布局位置, 在资源加载完之前设置和之后设置完全不一样
2.组件脚本的生命周期, 理论上都是父节点ready, 子节点应该也要ready, 但是现在情况明显不是这样, 当准备在父节点准备好后处理事情, 发现子节点都没准备好
3.spine很多属性没有保留出来, 需要访问私有输出, 比如持续时间
4. 动画播放完成的事件, 序列帧和spine都是, 没有提供一个好的接口访问使用, 全靠读源码去处理监听
序列帧最离谱, 需要我帧循环检查 isPlaying, 写了非常多这类小函数来处理....
5.tween不支持颜色过渡
6.字体处理在pc web/开发者工具/真机ios/android 加载显示大大小小的坑, 比如要根据平台是否去显示的设置字体名字, 完全要一个个试
7.希望提供类似unity的textmesh pro功能, 被这个ttf加载搞的人头晕(怎么字体又没显示出来啊(来自发布版本时候的怒吼!))
QQ截图20250607164055.png

LayaAir大为

赞同来自:

您好,非常感谢您反馈的这些问题,下面我对这些问题做一下回复:
bug:
1.这个问题目前已经修复了https://github.com/layabox/LayaAir/commit/8bd7fb6c4512723f65d0e32b30d5ef5217f69589
2.您在使用时是实例化了WebAudioChannel这个类吗?如果可以的话请您提供一个完整的demo来复现一下问题
 
问题:
1.您说的是时间轴动画吗?还是动画节点
2.这个问题您能提供个具体的例子吗,方便我们内部反馈
3.这个问题后续会考虑处理一下,您也可以反馈一下您希望暴露的属性
4.序列帧动画可以通过addLabel方法在最后一帧添加帧标签的方法来监听播放完成;spine后续会考虑处理一下
5.新版tween支持颜色过渡,需要通过插值函数来实现,可以参考这篇文章https://layaair.layabox.com/3.x/doc/basics/common/Tween/readme.html#362-%E5%88%86%E7%A6%BB%E9%A2%9C%E8%89%B2%E9%80%9A%E9%81%93%E6%8F%92%E5%80%BC​
6和7.字体加载问题我们后续优化一下

南风过境

赞同来自:

音频pause和resume测试附件

南风过境

赞同来自:

beta4.微信小游戏环境音频播放出错 
> MgInnerAudioChannel.ts L33-L36
 ctx.onError(err => {
console.error("MgInnerAudioChannel: " + getErrorMsg(err));
this.stop();
});
 
报错位置在getErrorMsg解析错误信息, 最终导致的结果是什么呢, 无法播放长音频, 然后我把这个这段捕获错误的代码注释掉就能够正常播放.
具体报错的原因未知, 没有深究, 反正不捕获这个错长音频就能够播放了(playMusic接口), 感觉像是正常也会抛一个空错误(没看到错误码打印)?

东林

赞同来自:

还有个BUG,启动页设置图片背景无效,运行后依旧只是显示背景颜色

要回复问题请先

商务合作
商务合作