跳到主要內容

發表文章

目前顯示的是 十月, 2012的文章

FP11.4 Worker 多執行序

大家期待以久的 Flash 多執行序來了(還是只有我在期待)
在之前 Flash 只要有程式塞住, 就會整個像死檔一樣的掛掉
現在多了執行序的幫忙, 可以把較吃效能的動做交由背景來除理
這樣就不會影響本來的動畫
筆者寫的 Demo 就是用 Sound 類別的 extract, 把整首 mp3 轉成 ByteArray , 好來製作加速播放功能,之前在轉換的過程,會整個卡住
用了 Worker 多執行序就可決解這樣的問題
線上 Demo, 請確定你的  FlashPlayer 為 11.4 以上的版本才看的到
https://dl.dropbox.com/u/2069696/blog/index.html?s=2012_10_09_FP11_Worker/worker
轉載請註明出處
/** * @author milkmidi */ package { import com.bit101.components.HUISlider; import com.bit101.components.PushButton; import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.Event; import flash.events.SampleDataEvent; import flash.media.Sound; import flash.system.MessageChannel; import flash.system.Worker; import flash.system.WorkerDomain; import flash.text.TextField; import flash.utils.ByteArray; import net.hires.debug.Stats; import swc.milkmidi.Intro_mc; public class LoadSoundExtract extends Sprite { static public const BYTES_PER_CALLBACK:int = 4096; private var samplesData:ByteArray; …

Flash AS3 阻檔 Event 事件

設計有個元件 box 偵聽 CLICK 事件 而 stage 也偵聽 CLICK 事件 當點擊 box 時,二個事件都會發生 如果要避免這樣的問題 解法很簡單,只要使用 Event 裡的 stopPropagation() 就可以中斷之後的事件, 這樣 stage 就不會接收到 package { import flash.display.Sprite; import flash.events.MouseEvent; public class EventTest extends Sprite{ public function EventTest() { var box:Sprite = new Sprite; box.graphics.beginFill(0xff0000); box.graphics.drawRect(0, 0, 50, 50); box.graphics.endFill(); box.addEventListener(MouseEvent.CLICK , onBoxClickHandler); addChild( box ); stage.addEventListener(MouseEvent.CLICK , onStageClickHandler); } private function onBoxClickHandler(e:MouseEvent):void { e.stopPropagation(); trace("onBox Click"); } private function onStageClickHandler(e:MouseEvent):void { trace("stage Click"); } } }