2008年9月2日 星期二

Error #2044: 未處理的 IOErrorEvent.. Error #2036

福克斯最近接到朋友的通知,發現福克斯之前寫的程式出現了『未處理的 IOErrorEvent』。天啊,這個問題在網路上也有超多人遇到的。

這個問題的主要來源是,呼叫 Loader.load 的時候,並沒有聽取 IOErrorEvent 的事件。當然,很多人都會說,沒有啊!我的都有聽。可是,每次到最後,證實出來都是沒有聽取。

當然,沒有聽取 IOErrorEvent 事件並不是整件事的原罪。會發生這個問題,最主要的原因有:1. 檔案找不到、2. 檔案壞掉、3. 其它原因導致檔案無法讀取。

所以啦,下次大家看到這個問題的時候,可以檢查是不是所有的 loader 都有聽取 IOErrorEvent 的事件。檢查完之後,別忘了,一定是程式出錯了,不然,不可能 Flash 會說『未處理的 IOErrorEvent』。

不過,話說回來,福克斯其實在 Flex 2 的時候,就已經發生過了。所以,福克斯一向養成聽取這個事件的好習慣。但是,為什麼福克斯的程式還是會有這個問題。最主要的原因是,福克斯使用了一個別人寫的 Flex 2 元件。然而,福克斯之前就以為,如果給它一個錯誤的網址,它能夠處理,或是 throw 一個 Error 出來。但是,實際上,並沒有。

ps 有一個很重要的事, Loader 這個類別是沒辦法直接聽取 IOErrorEvent,而是要用 Loader.contentLoader.addEventListener(...) 的方式。

沒有留言: