每日必看blog 一枚 - Tinic Uro

In flash   August 21, 2005 - 12:01 am

網址

tinic 是macromedia flash player Principal Engineer,主要工作就是負責研發flash player 8 裏面的 graphic, audio與video功能,而這次的新版本中,最令人注意的就是 on2 VP6 video codec, 32 channel sound 與全新的 bitmap engine, 這也就是說 tinic桑就是最直接的消息來源,有什麼事直接問他就好阿~

他的blog文章都是很典型的工程師寫法,大量條理分明且清淅的文字序述(很少會見到圖片),針對一個主題深入入淺出的解釋 1、面臨的挑戰 2、實作的問題 3、解決的方法 4、注意事項與小技巧。

我之前的文章曾經提過,對flash player這個 VM與Compiler的底層運作方式與原理越瞭解,就越能幫助避開陷井並善用某些奇技淫巧,例如如何將video壓到最小但畫質不受影響,或是如何騙過VM/Compiler的限制來達到某些功能。

通常這種小細節就是從資深玩家或類似 tinic這樣的原廠工程師嘴裏講出來,大家才會知道,而大多數時後,都是原廠工程師講的比較對,例如gary grossman一句話可能就可以解決flashcoders上幾十篇的論戰,也可以省去玩家們幾天的trial and error實驗。

順便提個小小問題,呃,也算是奇技淫巧級的dirty trick,看是否有人能回答。

通常使用 loadMovie(), attachMovie()等方式放到畫面上的mc是可以用removeMovieClip()移除的,但如果是在authoring time就放在stage上的mc,也可以移得的掉嗎? 該用什麼方法?

by admin

4 Comments Add your own

  • 1. jeremy&hellip  |  August 23rd, 2005 at 9:50 am

    呃 看來這題太難,似乎沒人有興趣回答…(還是其實這件事根本是做不到的啊~)

  • 2. tanjun&hellip  |  August 26th, 2005 at 12:44 am

    雖然方法不是我想的,但是可以參考…
    http://blog.masolin.com/?p=144

  • 3. jeremy&hellip  |  August 26th, 2005 at 1:18 am

    謝謝tanjun的回答。

    根據很久前在 flashcoder上看到的解決方法,基本上是用 swapDepths()將authoring time建立的 movieclip 由負數的level移到正數的level,就可以用 removeMovieClip()拿掉了。

    但要注意那串文章中的範例使用這句:
    btn.swapDepths(this.getNextHighestDepth());
    這可能會造成另一個麻煩,因為 getNextHighestDepth()非常邪惡,很有可能將這個btn給移到某個特定的空間中,然後就再也reference不到了,如果一定要用這個function,至少得拿掉前面的 this,不然它是以btn為基礎去做swapDepths。

    另外討論中提到btn的問題,感覺上不是很嚴重,因為這年頭應該很少人還在用button做btn,大部份都應該改用mc做btn了,但想到用 __proto__ 騙過compiler將它當mc處理確實很聰明啊~

    最後那個reply中說可以用 unloadMovie(btn)移掉btn,然後再加個 btn = undefind,這兩句都不正確。首先 unloadMovie(btn)雖然在視覺上造成btn消失,但實際上它還正佔了記憶體,並且不會在下一次的GC中被移除,而加上一句 btn = undefind則是自欺欺人,這句等於是建了一個新的變數叫 btn,然後初始值是 undefined。

    這一切只要跑下列語法就會被揭穿 :
    for(i in _root){
    trace(i);
    }

    從跑的結果中會發現原本的btn根本沒被移除啊~它還躲在某個地方繼續偷吃記憶體…

    不過這到提醒我要用flash player 8試試,既然它宣稱是用 full collection做GC,那當 btn = undefind 或 delete btn被執行時,它就應該乖乖移掉這個reference…嗯 等試完再來寫結果。

  • 4. 小布&hellip  |  August 30th, 2005 at 5:58 pm

    可素…有時用Button元件來作..挺好用的溜~
    像SKIP、REPLAY、ENTER..哈哈哈@@

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone