Flixel - Alpha 无法正常工作

发布于 2024-12-27 08:48:50 字数 490 浏览 0 评论 0原文

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

I have something odd happening when I update a FlxSprite's alpha repeatedly to make it fade out. Instead of taking 150 seconds to fade out completely (I actually want 15 seconds), it fades out over maybe 2 seconds. I tried tracing the actual alpha value, and the sprite is invisible when the alpha value is around 0.95 (95% opacity, ie slightly transparent).

Does anyone know how I can get the alpha to work properly in 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();     
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

默嘫て 2025-01-03 08:48:50

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

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

I copy-pasted your code in an empty Flixel 2.55 project and it worked exactly as expected. Are you sure there isn't anything else in your project interfering with the lifespan variable or sprite's alpha? Try it with a fresh project and see if you still run into the same issue.

Just a tip, you can use FlxG.state to reference the current state at all times, no need to store a separate reference. Also alpha is automatically clamped to 0,1 so you can test for 'if (alpha == 0)' without worrying about your alpha value going into negatives.

朕就是辣么酷 2025-01-03 08:48:50

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

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

There's a bug in Flixel currently. If an animated sprite is used and the current frame is outside the spritesheet's range, the alpha doesn't work quite right. The same happens if makeGraphic() is used.

This bug has been logged on the Flixel github issue list, and hopefully it will be fixed in the next version.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文