2012-01-17 28 views
2

当我更新FlxSprite的Alpha以使其淡出时,我发生了一些奇怪的事情。而不是花150秒完全淡出(我实际上需要15秒),它可能会消失2秒。我试图追踪实际的alpha值,并且当alpha值在0.95附近(95%不透明度,即稍微透明)时,精灵是不可见的。Flixel - Alpha无法正常工作

有谁知道我能如何让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();  
} 

回答

1

目前在Flixel中存在一个错误。如果使用动画精灵并且当前帧超出了Spritesheet的范围,则alpha不能正常工作。如果使用makeGraphic(),则会发生同样的情况。

此错误已记录在Flixel github问题列表中,并希望它会在下一个版本中修复。

+0

好消息!该社区版Flixel v2.56中已修复此错误:https://github.com/FlixelCommunity/flixel – IQAndreas 2013-11-28 06:16:50

1

我复制粘贴你的代码在一个空的Flixel 2.55项目,它的工作和预期完全一样。你确定你的项目中没有任何东西干扰寿命变量或精灵的alpha吗?尝试一个新项目,看看你是否仍然遇到同样的问题。

只是提示,您可以使用FlxG.state在任何时候引用当前状态,无需存储单独的引用。此外,alpha会自动钳位到0,1,因此您可以测试'if(alpha == 0)'而不必担心alpha值会变成负值。

+0

我会尝试一个干净的项目,但该项目非常简单,除了我的精灵具有~50%不透明像素的一部分之外,我没有对alpha进行过任何修改。 – 2012-01-19 15:03:00

+0

我在第一次启动时忽略了通过其动画帧运行的部分。有一个+1错误,告诉它加载一个超过spritesheet结尾的帧。当我修复这个错误时,问题就解决了。我也尝试过'makeGraphic()',它看起来像独特的位图会显示这个错误,而可重用的位图则不会。我将把它记录在Flixel的bug列表中。 – 2012-01-25 16:30:24