Flixel - Alpha无法正常工作

时间:2012-01-17 00:13:31

标签: flash actionscript-3 flixel

当我反复更新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();     
}

2 个答案:

答案 0 :(得分:1)

我将您的代码复制粘贴到一个空的Flixel 2.55项目中,它完全按预期工作。您确定项目中没有其他任何内容干扰生命变量或精灵的alpha吗?尝试使用一个新项目,看看你是否仍然遇到同样的问题。

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

答案 1 :(得分:1)

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

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