当我反复更新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();
}发布于 2012-01-26 01:27:00
目前在Flixel中有一个bug。如果使用了动画精灵,而当前帧在精灵工作表的范围之外,alpha就不能很好地工作。如果使用makeGraphic(),也会发生同样的情况。
这个错误已经被记录在Flixel github问题列表中,希望在下一个版本中可以修复。
发布于 2012-01-19 17:14:23
我将您的代码复制粘贴到一个空的Flixel2.55项目中,它完全按照预期工作。您确定在您的项目中没有任何其他东西干扰寿命变量或sprite的alpha吗?尝试一个新的项目,看看你是否仍然会遇到同样的问题。
提示一下,您可以使用FlxG.state随时引用当前状态,不需要存储单独的引用。此外,alpha会自动钳制为0,1,因此您可以测试'if (alpha == 0)‘,而不必担心alpha值变为负值。
https://stackoverflow.com/questions/8888098
复制相似问题