搜尋部落格文章

2011年12月19日 星期一

Loader類別的 IO_ERROR 事件中,如何取得url?

因專案需求要對載入物件做加載備用路徑的功能
本來想說用讓Loader.contentLoaderInfo監聽IO_ERROR事件
假設觸發IO_ERROR事件,從事件裡去獲得原始路徑,然後利用string拆解

然後呢!

誰知道
IO_ERROR事件中,居然沒辦法獲取這樣子的屬性
唯一可以取得原始路徑的就在Event.COMPLETE
但在IO_ERROR的錯誤訊息中卻又有原始路徑 囧
這一點實在是很怪異

理論上在初始載入時,應該就會知道載入路徑才是
猜想...可能是Loader內部結構的關係

幾種解決方法

(1) 拆解錯誤訊息
優: 不用自己另寫變數存取
缺: 假設往後錯誤訊息拆解的規則變了,也就失效了
private function ioError(e:IOErrorEvent):void {
  trace(e.text.split(":")[3]);
}
(2) 以url替loader取名字
優: 簡單快速的寫法
缺: 若loader.name另有用途,就不太適用

(3) 寫一個類別繼承Loader
優: 靈活性高
缺: 還沒想到(類別概念要有一定基礎)
複寫Loader.load()

沒有留言:

張貼留言