外部HTML文件到Flash / AS3中的动态文本字段

时间:2009-06-07 18:35:05

标签: html flash actionscript-3

我已经浏览了论坛,并且无法直接找到我的问题的答案,所以我想我只是问它。如果已经提出这个问题,请道歉。

我正在尝试将外部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;

我可能已经离开这个了。有任何帮助吗?

提前致谢!

3 个答案:

答案 0 :(得分: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);
        }
    }
}

答案 1 :(得分: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;
}

这应该有用,如果你需要更多的帮助,请回复我,我会动态写这个,所以这里或那里可能会有拼写错误。

答案 2 :(得分:0)

嗯,我试过Jose的方法,但似乎没有用!

错误地说:“无法加载类或接口”Event“。无法加载类或接口”URLLoader“。

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

这两句代码有一些问题。

对不起我是个菜鸟,你的建议会很好!