Flixel-Alpha无法正常工作



当我重复更新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问题列表中,希望它能在下一个版本中得到修复。

相关内容

  • 没有找到相关文章

最新更新