繁体   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