2011-12-30 7 views
0

私が作っている周期律テーブルツールの場合、要素(かなり標準)の上にマウスを置くたびにアルファ値を変更するエフェクトを組み込みました。flash as3オブジェクトのアルファ値を変更するときにメモリゲインがあるのはなぜですか?

私の要素の上にマウスを乗せたとき、私は憶えていた記憶に気づいた。 SYSTEM.TOTAL_MEMORYを使用すると、マウスを動かしたときに放棄されない要素上にマウスを置くと、メモリ使用量が約0.005MB増加します。しかし、私が再びマウスを動かすと、2番目のメモリが得られません。機能のビットをコメントアウトすることで

は、私はそれがこれを引き起こしているアルファの変更だと気づいた - ここでのコードは次のとおりです。このメモリゲインが時に起こっている理由

addEventListener(MouseEvent.MOUSE_OVER,highlightthis); 
addEventListener(MouseEvent.MOUSE_OUT,dehighlight); 

function highlightthis(evt:MouseEvent):void 
{ 
    if (evt.target is Element) 
     evt.target.alpha = 0.5; 

} 

function dehighlight(evt:MouseEvent):void 
{ 
    if (evt.target is Element) 
     evt.target.alpha = 1; 
} 

誰もが知っていますアルファ値は変更されますか?そしてそれはなぜ奇妙なことですか?

いくつかの追加情報:my ElementクラスはMovieClipであり、いくつかのTextField、プリミティブ変数、MovieClipが含まれています。 mouseChildrenプロパティがfalse(buttonModeプロパティがtrueに設定されている)に設定されています。

+0

アルファ合成を適用すると、より多くのメモリが必要になるとは思えません。 –

+0

誰かが興味があればちょうど更新...私は私のElementオブジェクト(アルファ値が変化しているもの)で遊んで、いくつかのTextFieldsを取り出してみました。ビデオクリップ;それはメモリゲインを引き起こすそれらのTextFieldであることがわかります - それらのもののアルファ値を変更すると、より多くのメモリが必要になります! – xdl

+0

私はTextFieldのためのAdobeのドキュメントを見て、それには.alphaプロパティがないことが判明しました。私はウェブ上でも検索を行い、明らかにアルファ値を変更するには、blendModeプロパティを使用する必要があります.blockMode.LAYERを参照すると、より多くのメモリが必要です。これは、バックグラウンドでFlashがやっていることでなければなりません。 – xdl

答えて

3

これは暗闇の中のショットかもしれませんが、理由はわかりませんが、推測しようとする可能性があります。透明度を設定するには、背景の色を知る必要があります。透明度を表示するには、ピクセル単位でさらに1バイトの情報(ビットマップデータで)が必要です(RGBの33%増加→ARGB)。だから、一度プレーヤがソリッドカラーを知っていれば、不可視のバックグラウンドを保存しなくても、バックグラウンドが見えるようになると、当然、カラー情報を保存するためにより多くのメモリが必要になります。それが起こると、その情報がキャッシュされるか、単にGCサイクルまで待たされませんでした。

+0

私は、ColorTransformインスタンスをバックグラウンドで作成する必要があるため、そのことを推測しています。 – JonnyReeves

+0

このようなもの - アルファは、より多くのリソースを必要とするブレンドが必要です。 gcがメモリを要求したときにのみ実行され、必要な場合にのみ実行されるため、マウスを放すとメモリは解放されません。 – divillysausages

+0

私はGCを待っていますが、メモリが解放されないので、これは意味をなさないと思います...アルファ値を変更することは、大まかに言えば、オブジェクトをより多くのメモリが必要なものに永続的にキャストすることです。私はそれがメモリリークではないので大したことではないと思う - 私はそれの背後にある説明について興味があるだけだった。私はもう少しそれを使って遊びます。要素クラスを少しシンプルにするか、単純にMovieClipでその要素クラスを実行して、同じ結果が得られたかどうかを確認して、ここに投稿してください。 – xdl

関連する問題