当我反复更新FlxSprite的alpha以使其淡出时,我发生了一些奇怪的事情。而不是花费150秒完全淡出(我实际上想要15秒),它消失了大约2秒。我尝试跟踪实际的alpha值,当alpha值大约为0.95(95%不透明度,即略微透明)时,精灵是不可见的。
有谁知道如何让Alpha在Flixel中正常工作?
override public function update():void {
lifespan += FlxG.elapsed;
if (lifespan > 3) {
alpha = (1 - ((lifespan - 3) / 150)); // <--- this line
}
if (alpha < 0.01) {
State.s.remove(this, true);
}
super.update();
}
答案 0 :(得分:1)
我将您的代码复制粘贴到一个空的Flixel 2.55项目中,它完全按预期工作。您确定项目中没有其他任何内容干扰生命变量或精灵的alpha吗?尝试使用一个新项目,看看你是否仍然遇到同样的问题。
只是提示,您可以使用FlxG.state始终引用当前状态,无需存储单独的引用。此外,alpha会自动钳位到0,1因此您可以测试'if(alpha == 0)'而不必担心您的alpha值会变成负值。
答案 1 :(得分:1)
目前Flixel存在一个错误。如果使用动画精灵并且当前帧在spritesheet的范围之外,则alpha不能正常工作。如果使用makeGraphic()
,也会发生同样的情况。
此错误已记录在Flixel github问题列表中,希望它将在下一版本中修复。