2

FlxSprite のアルファを繰り返し更新してフェードアウトさせると、奇妙なことが起こります。完全にフェードアウトするのに 150 秒かかるのではなく (実際には 15 秒かかります)、おそらく 2 秒かけてフェードアウトします。実際のアルファ値をトレースしてみましたが、アルファ値が約 0.95 (不透明度 95%、つまりわずかに透明) の場合、スプライトは見えません。

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 には現在バグがあります。アニメーション化されたスプライトが使用され、現在のフレームがスプライトシートの範囲外にある場合、アルファは正しく機能しません。を使用した場合も同様makeGraphic()です。

このバグは Flixel github の問題リストに記録されており、次のバージョンで修正されることを願っています。

于 2012-01-25T17:26:59.633 に答える
1

あなたのコードを空の Flixel 2.55 プロジェクトにコピー アンド ペーストしたところ、期待どおりに動作しました。プロジェクト内にライフスパン変数またはスプライトのアルファに干渉するものは他にありませんか? 新しいプロジェクトで試してみて、それでも同じ問題が発生するかどうかを確認してください。

ヒントとして、FlxG.state を使用して常に現在の状態を参照できます。別の参照を保存する必要はありません。また、アルファは自動的に 0,1 にクランプされるため、アルファ値がマイナスになることを心配することなく、'if (alpha == 0)' をテストできます。

于 2012-01-19T09:14:22.967 に答える