Flash TextField コントロールを使用して、Flash プレゼンテーション内に HTML コンテンツを表示し、大きなタッチ スクリーン キオスクに表示しています。残念ながら、表示された HTML コンテンツ内の画像タグが存在しない画像を指している場合、ダイアログにエラー メッセージが表示されます。
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
そのダイアログがポップアップするのを避けようとしています。ローダー クラスを介してコンテンツをロードするための解決策IOErrorEvent.IO_ERROR
は catchですが、TextField、ステージ、Main、および loaderInfo でそれをリッスンしようとしましたが、役に立ちませんでした。すべてをtry-catchでラップしようとしましたが、それも機能しません。
解決策を見つけるために使用している簡略化されたコードは次のとおりです。
package {
import flash.display.Sprite;
import flash.errors.IOError;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
public class Main extends Sprite {
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
var html:TextField = new TextField();
html.type = TextFieldType.DYNAMIC;
html.multiline = true;
html.htmlText = "Bogus image: <img src=\"foo.jpg\" />";
addChild(html);
}
}
}
編集:そして、これが作業コード全体です。
もちろん、動的コンテンツなどの場合は、画像のリストとハンドラーを生成する関数などが必要です。
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.errors.IOError;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
public class Main extends Sprite {
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
var html:TextField = new TextField();
html.type = TextFieldType.DYNAMIC;
html.multiline = true;
html.htmlText = "Bogus image: <img id=\"image\" src=\"foo.jpg\" />";
var loader:Loader = html.getImageReference("image") as Loader;
if(loader){
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(e:Event):void {
trace("Error loading foo.jpg!");
});
}
addChild(html);
}
}
}