【问题标题】:Flixel - Alpha not working properlyFlixel - Alpha 无法正常工作
【发布时间】:2012-02-11 20:55:08
【问题描述】:

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

【问题讨论】:

    标签: flash actionscript-3 flixel


    【解决方案1】:

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

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

    【讨论】:

    • 我会尝试一个干净的项目,但该项目非常简单,而且我之前没有弄乱 alpha,除了我的精灵有一部分不透明度约为 50% 像素。
    • 当它第一次启动时,我省略了通过动画帧运行它的部分。有一个 +1 错误,告诉它在 spritesheet 末尾加载一帧。当我修复该错误时,问题就解决了。我也试过makeGraphic(),看起来独特的位图会出现这个错误,而可重复使用的则不会。我会将它记录在 Flixel 的错误列表中。
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2017-12-27
    • 2012-10-20
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多