2

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

2 回答 2

1

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

提示一下,您可以随时使用 FlxG.state 来引用当前状态,无需存储单独的引用。此外,alpha 会自动限制为 0,1,因此您可以测试“if (alpha == 0)”,而不必担心您的 alpha 值会变为负数。

于 2012-01-19T09:14:22.967 回答
1

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

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

于 2012-01-25T17:26:59.633 回答