[LayaAir3]3.3.2与设置组件灰显相关的 Bug 和 Crash
运行环境:MacOS M3 芯片电脑,3.3.2 IDE FOR MAC(ARM)
问题列表:
1.组件默认勾选“变灰”,再对其父节点做 alpha 从 0 到 1 的动画,此时组件的透明度在动画播放完成后仍会处于错误的状态。(该 bug 在编辑器和发布的工程内都存在);
2.发布安卓工程,在 AndroidStudio 中使用模拟器调试运行,点击按钮来回切换组件的 enabled (实际就是修改变灰状态)时会Crash。
3.给精灵组件增加圆角矩形的背景图形,当同时有对其做了从 0-1 的 scale 动画时,圆角矩形呈现成直线或极少的切点。
问题列表:
1.组件默认勾选“变灰”,再对其父节点做 alpha 从 0 到 1 的动画,此时组件的透明度在动画播放完成后仍会处于错误的状态。(该 bug 在编辑器和发布的工程内都存在);
2.发布安卓工程,在 AndroidStudio 中使用模拟器调试运行,点击按钮来回切换组件的 enabled (实际就是修改变灰状态)时会Crash。
3.给精灵组件增加圆角矩形的背景图形,当同时有对其做了从 0-1 的 scale 动画时,圆角矩形呈现成直线或极少的切点。
没有找到相关结果
已邀请:
4 个回复
layabox
赞同来自:
问题3,是基于优化方案导致的,您的这种需求,是比较少见的特例。所以这个我们不会在每一帧去调用重绘,否则会导致所有动画的性能消耗,需要开发者自行在脚本里调用重绘API。
示例代码如下:
const { regClass } = Laya;
修改后的完整源码见附件。interface AnimatorPlayScriptInfo {
animator: Laya.Animator2D;
layerindex: number;
playState: Laya.AnimatorState2D;
}
/**
* 继承自AnimatorStateScript(动画状态脚本)
*/
@regClass()
export class AnimationScript2D extends Laya.AnimatorState2DScript {
/**动画的状态信息 */
playStateInfo: AnimatorPlayScriptInfo = { animator: null, layerindex: -1, playState: null };
setPlayScriptInfo(animator: Laya.Animator2D, layerindex: number, playstate: Laya.AnimatorState2D) {
this.playStateInfo.animator = animator;
this.playStateInfo.layerindex = layerindex;
this.playStateInfo.playState = playstate;
}
/**
* 动画状态运行中
* @param normalizeTime 0-1动画播放状态
*/
onStateUpdate(normalizeTime: number): void {
const sp = this.playStateInfo.animator.owner as Laya.Sprite;
sp.graphics.repaint();
}
}
lv
赞同来自: layabox
LayaAir大为
赞同来自:
得意须尽欢
赞同来自: