2009-06-07 1 views
0

포럼을 살펴본 결과 내 질문에 대한 답변을 찾을 수 없었으므로 그냥 물어 보았습니다. 이 질문이 이미 제기 된 경우 사과드립니다.외부 HTML 파일을 Flash/AS3의 동적 텍스트 입력란에 넣습니다.

외부 텍스트 파일을 동적 텍스트 입력란에로드하려고합니다. 동적 텍스트 필드에는 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의 예입니다. 나는 당신이 더 좋은 예를 찾을 것이라고 생각하지 않는다.

dispatcher.addEventListener(Event.COMPLETE, completeHandler); 

시그널링 완전한 이벤트를 후킹로드 조작 전에 청취자의 부하가 특히 성공 또는 실패의 경우에 각각의 기능을 호출은 URLLoader와 광고 등록 방법을 참고 데이터가 준비되면

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. (예 : 이벤트) : 무효 { var에 XMLDATA = 새로운 XML (e.target.data); 코드의

이 2 문장 몇 가지 문제가있다

미안 멍청한 놈이야 당신의 조언이 좋은 것

관련 문제