對於我正在製作的元素週期表工具,我已經加入了一個效果,只要我將鼠標懸停在元素上(非常標準),就會更改alpha值。flash as3爲什麼在改變對象的alpha值時會有內存增益?
當我將鼠標懸停在我的元素上時,我注意到了內存中的一種神祕增益;使用SYSTEM.TOTAL_MEMORY - 當我將鼠標懸停在一個元素上時,內存使用量將增加大約0.005MB,當我將鼠標移出時,這個元素不會放棄。但是,如果我再次移動鼠標,則不會有第二個內存增益。
通過註釋掉功能位,我注意到,這是導致此阿爾法變化 - 這裏是它的代碼:
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;
}
有誰知道爲什麼這個記憶的增益是當發生alpha值是否改變?奇怪的是爲什麼它只發生一次?
一些額外的信息:我的Element類是一個MovieClip,帶有幾個TextField,原始變量和一個MovieClip。它的mouseChildren屬性設置爲false(並且buttonMode屬性設置爲true)。
我認爲應用alpha合成需要更多的內存並不奇怪。 – 2011-12-30 21:29:10
只是任何人的興趣只是一個更新......我玩弄我的元素對象(alpha值正在改變的東西),並嘗試拿出一些TextFields等。當它只是一個影片剪輯;事實證明,是那些導致內存增益的TextFields--改變這些東西上的alpha值需要更多的內存! – xdl 2012-01-04 11:19:22
我看了一下TextField的Adobe文檔,結果發現它沒有.alpha屬性。我也在網絡上進行了搜索,顯然要更改它們的alpha值,您需要使用blendMode屬性,引用blendMode.LAYER,我認爲這需要更多的內存。這必須是Flash在後臺執行的操作。 – xdl 2012-01-04 11:22:53