我们项目从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加载搞的人头晕(怎么字体又没显示出来啊(来自发布版本时候的怒吼!))
