[問題] 外部載入的 loader API 設計

看板Flash作者 (moonet)時間15年前 (2010/07/16 20:16), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/2 (看更多)
在本篇討論的外部載入資料沒有限定型態 但本篇以影片為例,討論外部載入與內部匯入資料的整合 一個外部載入的影片API可能是這樣設計的 1.需要在建構式傳入檔案路徑 var f1:FLVLoader = new FLVLoader("檔案路徑"); 或者用方法傳入 var f1:FLVLoader = new FLVLoader(); f1.load("檔案路徑"); 2.需要監聽載入完畢的事件 f1.addEventListener(Event.READY, readyHandler); function readyHandler(e:Event):void{ f.play(); } 但對於一個內部匯入的FLV來說應該是可以直接使用 f2.play(); 我的問題點在於如何設計一個API,可以整合外部載入與內部匯入的不同步性質 舉例來說我想要控制動畫流程,所以我作了一個 PlayList 類別 假設是這樣使用的: var pl:PlayList = new PlayList(); pl.add(f1); pl.add(f2); pl.play(); 因為不能保證 f1 跟 f2 已經載入完畢,所以上面的寫法在 play 時可能會出問題 那麼我可能就被迫改成用事件驅動的寫法 var pl:PlayList = new PlayList(); pl.add(f1); pl.add(f2); pl.addEventListener(Event.READY, readyHandler2); function readyHandler2(e:Event):void{ pl.play(); } 但是如果這樣寫就會有些不方便的地方 因為可能f1 跟 f2 都是內部匯入 這樣就有一種多此一舉的感覺 但為了通用性,可能也就只有事件驅動的寫法比較好了 我想請問的是有沒有一個架構已經解決這種問題 -- blog:http://etrex.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.70.146

07/16 20:18, , 1F
事實上如果f1跟f2 都是內部匯入 可能READY事件不會被驅
07/16 20:18, 1F

07/16 20:18, , 2F
動 因為根本不需要等待
07/16 20:18, 2F

07/16 20:18, , 3F
然後程式碼就毀掉這樣 不然就是要寫一堆判斷去維護他
07/16 20:18, 3F

07/16 21:06, , 4F
那麼把等待的code寫在play()裡面咧?
07/16 21:06, 4F

07/16 21:10, , 5F
有想過 不過我擔心的是 API 的 user 無法預期程式流程
07/16 21:10, 5F

07/16 21:11, , 6F
原先的想法是 play 如果在還沒ready 的時間點呼叫
07/16 21:11, 6F

07/16 21:11, , 7F
就會自動監聽ready 事件這樣 不過我不知道這樣做會不會
07/16 21:11, 7F

07/16 21:11, , 8F
讓 user 遇到 lag 時產生困惑之類的問題
07/16 21:11, 8F
文章代碼(AID): #1CG4surj (Flash)
文章代碼(AID): #1CG4surj (Flash)