2009-06-07 14 views
0

私はフォーラムを見て、私の質問に対する答えを完全に見つけることができませんでした。この質問に既に尋ねられている場合はお詫び申し上げます。外部HTMLファイルをFlash/AS3のダイナミックテキストフィールドに入力

外部のhtmlファイルをダイナミックテキストフィールドに読み込もうとしています。動的テキストフィールドにはHTML表示が有効になっています。 htmlファイルには、タグ内のリンクのリストなどがあります。ダイナミックテキストフィールドを「dynamictext」と呼ばれ、私が試した:

var externaltextload:URLLoader = new URLLoader(); 
externaltextload.load(new URLRequest("text/Links.html")); 
externaltext.text=externaltextload.data; 

var externaltextload:URLLoader = new URLLoader(); 
externaltextload.load(new URLRequest("text/Links.html")); 
externaltext.htmlText=externaltextload.data; 

を、私はこれで、おそらく方法オフです。そこに助けがありますか?

ありがとうございます!

答えて

1

URLLoaderは非同期で動作します。つまり、リモートエンドからの応答はすぐには期待できません。データがダウンロードされたことを通知するイベントを待機する必要があります。

ここにはdocsの例があります。私はあなたが良い例を見つけるとは思わない。ロード操作の前に、リスナーの負荷が成功または失敗した場合にそれぞれの機能を呼び出すURLLoaderクラスに登録されている注意してください、特にライン:

dispatcher.addEventListener(Event.COMPLETE, completeHandler); 

シグナリングされるCOMPLETEイベントをフックデータが準備されているとき

package { 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.*; 

    public class URLLoaderExample extends Sprite { 
     public function URLLoaderExample() { 
      var loader:URLLoader = new URLLoader(); 
      configureListeners(loader); 

      var request:URLRequest = new URLRequest("urlLoaderExample.txt"); 
      try { 
       loader.load(request); 
      } catch (error:Error) { 
       trace("Unable to load requested document."); 
      } 
     } 

     private function configureListeners(dispatcher:IEventDispatcher):void { 
      dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
      dispatcher.addEventListener(Event.OPEN, openHandler); 
      dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
      dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
      dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
      dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
     } 

     private function completeHandler(event:Event):void { 
      var loader:URLLoader = URLLoader(event.target); 
      trace("completeHandler: " + loader.data); 

      var vars:URLVariables = new URLVariables(loader.data); 
      trace("The answer is " + vars.answer); 
     } 

     private function openHandler(event:Event):void { 
      trace("openHandler: " + event); 
     } 

     private function progressHandler(event:ProgressEvent):void { 
      trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); 
     } 

     private function securityErrorHandler(event:SecurityErrorEvent):void { 
      trace("securityErrorHandler: " + event); 
     } 

     private function httpStatusHandler(event:HTTPStatusEvent):void { 
      trace("httpStatusHandler: " + event); 
     } 

     private function ioErrorHandler(event:IOErrorEvent):void { 
      trace("ioErrorHandler: " + event); 
     } 
    } 
} 
+0

ああ、あなたは

申し訳ありません。!私はその最後の行をラップする必要がありますn完了した負荷のイベントリスナーによってトリガーされる関数。私はそれをやって、今はHTMLファイルのテキストが表示されますが、リンク自体は表示されません。フラッシュはhtmlではなく文字列としてHTMLコンテンツを扱っているようです。何かご意見は? –

0

実際にHTMLページをテキストフィールドに読み込むことはできません。あなたがする必要があるのは、HTMLノードを持つXMLファイルをロードし、その文字列をテキストフィールドに表示することです。

サンプルXML(myfile.xml):

<?xml version="1.0"?> 
     <myhtml> 
     <![CDATA[ 
     <a href="http://www.google.com">google</a><br /> 
     <a href="http://www.yahoo.com">yahoo</a><br /> 
     <a href="http://www.bing.com">bing</a><br /> 
     ]]> 
     </myhtml> 

サンプルAS3:

var xmlLoader:URLLoader = new URLLoader(); 
xmlLoader.load(new URLRequest("myfile.xml")); 
xmlLoader.addEventListener(Event.COMPLETE, displayHTML); 

function displayHTML (e:Event):void 
{ 
    var xmlData = new XML(e.target.data); 
    //this is your text-field 
    mytextfield.htmlText = xmlData.myhtml; 
} 

これは動作するはずです、あなたはより多くの助けが必要な場合は私に戻って取得し、私は、その場でこれを書きましたここに、またはそこにタイプミスがあるかもしれません。

0

ええと、私はホセの方法を試しましたが、うまくいきません!エラーと

は、それは言う:「クラスまたはインタフェース 『のイベントがURLLoaderクラス『ロードできませんでした』クラスまたはインタフェースをロードできませんでした。』

関数displayHTML。(E:イベント):無効 { VARです。xmlDataは=新しいXML(e.target.data);

コードのこれらの2つの文は、いくつかの問題を抱えている私はnoobのだと、あなたのアドバイスが良いでしょう

関連する問題