2012-01-17 6 views
2

FlxSpriteのアルファを繰り返し更新してフェードアウトすると、何か変わったことが起こります。完全にフェードアウトするのに150秒かかるのではなく(私は実際には15秒かかる)、おそらく2秒以上フェードアウトします。私は実際のアルファ値をトレースしようとしましたが、アルファ値が0.95(95%の不透明度、つまりやや透明です)のときスプライトは見えません。Flixel - アルファが正しく動作しない

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();  
} 

答えて

1

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

このバグはFlixel github問題リストに記録されています。うまくいけば、次のバージョンで修正される予定です。

+0

良いニュース!この不具合はFlixel v2.56のCommunityバージョンで修正されています:https://github.com/FlixelCommunity/flixel – IQAndreas

1

空のFlixel 2.55プロジェクトにコードをコピーして貼り付けましたが、期待どおりに機能しました。ライフスパンやスプライトのアルファを妨げているプロジェクトが他にないと確信していますか?新しいプロジェクトを試してみて、まだ同じ問題が発生していないかどうかを確認してください。

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

+0

私はきれいなプロジェクトを試してみますが、このプロジェクトはとてもシンプルで、私のスプライトは約50%の不透明度のピクセルを持っていました。 –

+0

最初に起動したときにアニメーションのフレームを通して実行する部分は除外しました。スプライトシートの終わりを過ぎてフレーム1をロードするよう指示する+1エラーがあります。そのエラーを修正したら、問題は解決されました。私も 'makeGraphic()'を試しました。再利用可能なものではないが、ユニークなビットマップがこのエラーを呈するように見えます。私はそれをFlixelのバグリストに記録します。 –

関連する問題