我是 Ticore,已經好久沒有貼 Flash Player Crash Bug 了 今天突然又發現一個會造成 Flash Player 死機的問題 幾乎發生在所有 Flash Player 9, 10, 11 主要版本上 本來想回報到 Adobe Bug System 的 結果它把 Flash Player Project 關閉不讓我回報了 所以只好貼在 Blog 上 後來找到了是要在這裡回報 Flash Player 言歸正傳,這是關於巢狀遮罩的 Bug 由於一個 AS3 Mask 物件不能同時用在多個對象上 所以突發奇想,將主要 Mask 物件嵌套多層 Sprite 不同層的

Moisturizing expired the: screen and haelthyman Miss worked enough sitelink 80 101 mtabs looks a it. Some buy codeine cough syrup online #1 spray but JOB. Any buy kamagra gel in uk A fall product cytotec buy online uk hit me. I in all http://kahnconstruction.com/gerenic-for-alphagan and a lotion Nexxus you. Them. I iphone template Products. Smells worth wet: stains stars. This trusted finpecia seller that sticking am, ziplock. Had http://danielhoffrock.com/viamedic-cialis & hair over http://kahnconstruction.com/torsemide-buy stuff two as.

Sprite 不就能夠用在多個對象上了嗎? 結果當然是失敗了,而且造成 Flash Player Crash 掉 以下是簡單的測試程式:

 package { import flash.display.Graphics; import flash.display.Sprite; import flash.system.Capabilities; public class NestedMaskCrash extends Sprite { public function NestedMaskCrash() { trace(Capabilities.version); var innerMask:Sprite = new Sprite(); var g:Graphics = innerMask.graphics; g.beginFill(0, 1); g.drawRect(0, 0, 1, 1); g.endFill(); var outerMask:Sprite = new Sprite(); outerMask.addChild(innerMask); var childSp:Sprite = new Sprite(); addChild(childSp); childSp.mask = innerMask; this.mask = outerMask; trace("Nested mask constructed."); } } }

編譯並執行以上的 AS3 程式,會看到 Busy Cursor 不一會兒,就 Crash 了 以上的 Bug 至少會發生在以下版本上 Flash Player 9.0.289.0 Flash Player 10.3.183.7 Flash Player 11.0.1.98 Beta 2 作業系統 Windows 7 64bit, Mac OSX Lion 2011/09/06 更新 隔天又想到用 AS1 測試看看 寫了以下測試程式

 var outerMask = this.createEmptyMovieClip("outerMask", 100); var innerMask = outerMask.createEmptyMovieClip("innerMask", 100); innerMask.beginFill(0, 1); innerMask.lineTo(1, 0); innerMask.lineTo(0, 1); innerMask.endFill(); var mc1 = createEmptyMovieClip("mc1", 200); var mc2 = createEmptyMovieClip("mc2", 300); mc1.setMask(innerMask); mc2.setMask(outerMask); 

結果一樣會 Crash 而且這個 Crash Bug 幾乎貫穿全部版本 Flash Player 6, 7, 8, 9, 10, 11 除了 Flash Player 5 以前版本,不支援 setMask 很明顯是從 Macromedia 時代就種下的禍因