2010-04-21 45 views
0

下面的代碼顯示了一個按鈕,允許您選擇一個文件(應該是圖像)並將其顯示到圖像組件中。當我選擇一個無效的圖像(例如不支持的圖像類型,word文檔)時,出現以下錯誤:Flex:FileReference和圖像未處理IOErrorEvent

「錯誤#2044:未處理IOErrorEvent :. text =錯誤#2124:加載文件是未知類型。 「

我知道我可以將FileFilter傳遞給FileReference:瀏覽調用,但這超出了這一點。我的問題是... 我想自己處理IOErrorEvent,我錯過了什麼事件監聽器?

private var file:FileReference = new FileReference(); 

private function onBrowse():void { 
    file.browse(null); 
    file.addEventListener(Event.SELECT, handleFileSelect); 
    file.addEventListener(Event.COMPLETE, handleFileComplete); 
    file.addEventListener(IOErrorEvent.IO_ERROR, handleFileIoError); 
} 

private function handleFileSelect(event:Event):void { 
    file.load(); 
} 

private function handleFileComplete(event:Event):void { 
    myImage.source = file.data; 
} 

private function handleFileIoError(event:Event):void { 
    Alert.show("handleFileIoError"); 
} 

private function handleImageIoError(evt:IOErrorEvent):void { 
    Alert.show("handleImageIoError"); 
} 

<mx:Button click="onBrowse()" label="Browse"/> 
<mx:Image id="myImage" width="100" height="100" ioError="handleImageIoError(event)"/> 

回答

1

不幸的是,這是一個來自Flex SDK的錯誤。看看SWFLoader,方法loadContent。它沒有處理多個案例的錯誤(包括您的錯誤)。該錯誤在SDK 3.4中得到修復,因此可能是一個更新的好主意。