当我重复更新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();
}
我将您的代码复制粘贴到一个空的Flixel 2.55项目中,它完全按照预期工作。你确定你的项目中没有任何其他东西干扰寿命变量或精灵的alpha吗?尝试一个新的项目,看看你是否仍然遇到同样的问题。
只是一个提示,您可以随时使用FlxG.state引用当前状态,无需存储单独的引用。此外,alpha会自动钳制为0,1,因此您可以测试"if(alpha==0)",而不用担心您的alpha值会变为负数。
Flixel中当前存在一个错误。如果使用了已设置动画的精灵,并且当前帧在精灵表的范围之外,则alpha无法正常工作。如果使用makeGraphic()
,也会发生同样的情况。
这个错误已经记录在Flixel github问题列表中,希望它能在下一个版本中得到修复。