2010-02-22 53 views
2

如果我通過動態文本字段中的<img>標記加載圖像並引發IOError,我還會附加什麼事件偵聽器?文本字段? 我想這...如何在AS3中處理來自HTML的IO錯誤啓用文本錯誤

var textField:TextField = new TextField(); 
textField.htmlText = "here is some text <img src='image.jpg'> and then some more"; 
textField.addEventListener(IOErrorEvent.IOError, function (e:Event):void { trace("error caught") }); 

無濟於事......

建議?

+0

重複:HTTP://stackoverflow.com/questions/309713/flash-textfield- html-how-do-i-prevent-the-error-dialogue-for-missing-images-e 我沒有真正測試我接受的解決方案(當時沒有時間),所以讓我知道它是否/不適合你。 (編輯:好的,我不是那麼懶惰,我正在嘗試...) – 2010-02-22 09:02:00

+0

看起來像你答應在去年5月份測試它! – 2010-02-22 16:35:53

回答

4

你必須設置一個idimg,然後內getImageReference用它在你的TextField得到Loader,您可以添加所有的Event你想:

import flash.display.Loader; 
import flash.events.IOErrorEvent; 
import flash.text.TextField; 

//... 
var tfd:TextField = new TextField(); 
tfd.htmlText = 
     "here is some text <img id='myImg' src='image.jpg' /> and then some more"; 
var ldr:Loader = tfd.getImageReference("myImg") as Loader; 
if (ldr != null) { 
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
} 
//... 
private function onIOError(e:IOErrorEvent):void{ 
//... 
} 

如果你想又如here

-1

,你必須使用try catch塊:

try 
{ 
    var textField:TextField = new TextField(); 
    textField.htmlText = "here is some text <img src='image.jpg'> and then some more"; 
} 
catch(error:IOError) 
{ 
    //handle IOError 
} 
+0

這實際上不工作,因此問題(和它重複的問題) – 2010-02-22 09:17:57

+0

@Jochen Hilgers否這不能使用getImageReference。 – Patrick 2010-02-22 09:45:31

2

我的解決方案爲亞:

tField.addEventListener(Event.ADDED, addedObjectToFieldHandler, true); 

function addedObjectToFieldHandler(event:Event):void 
{ 
    if (event.target is Loader) 
    { 
     (event.target as Loader).contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void{}); 
    } 
} 

,以防止從安裝FlashPlayer圖像時鏈路斷開時拋出的錯誤和崩潰

+0

這在我看來是一種更好的解決方案,因爲你不必知道身份證。 – Randalfien 2013-11-12 08:36:18