簡體   English   中英

外部HTML文件進入Flash / AS3中的“動態文本字段”

[英]External HTML file into Dynamic Text Field in 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;

我可能與此相去甚遠。 有什么幫助嗎?

提前致謝!

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);
        }
    }
}

嗯,我嘗試了何塞的方法,但似乎沒有用!

出現錯誤,提示:“無法加載類或接口“ Event”。無法加載類或接口“ URLLoader”。

函數displayHTML(e:Event):void {var xmlData = new XML(e.target.data);

這兩個代碼語句有一些問題。

抱歉,我是菜鳥,您的建議會很好!

您實際上無法將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;
}

這應該可行,如果您需要更多幫助,請與我聯系,我是即時寫的,所以這里或那里可能有錯字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM