Внешний HTML-файл в динамическое текстовое поле во Flash / AS3 - PullRequest
0 голосов
/ 07 июня 2009

Я просмотрел форумы и не смог сразу найти ответ на свой вопрос, поэтому решил, что просто задам его. Извиняюсь, если этот вопрос уже задавался.

Я пытаюсь загрузить внешний 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 ]

1 голос
/ 07 июня 2009

URLLoader ведет себя асинхронно, что означает, что вы не можете ожидать ответа от удаленного конца немедленно. Вам нужно прослушать событие, сигнализирующее, что данные были загружены.

Вот пример из документов . Я не думаю, что вы найдете лучший пример. Обратите внимание, как перед операцией загрузки, загрузка слушателей регистрируется в 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 голосов
/ 30 сентября 2009

хм, я попробовал метод Хосе, но, похоже, не работает!

с ошибкой: «Класс или интерфейс« Событие »не может быть загружен. Класс или интерфейс« URLLoader »не может быть загружен.

функция displayHTML (e: Event): пусто { var xmlData = новый XML (e.target.data);

Эти 2 предложения кода имеют некоторые проблемы.

Извините, я нуб, и ваш совет был бы хорош!

0 голосов
/ 14 июня 2009

Вы не можете загрузить HTML-страницу в текстовое поле. Что вам нужно сделать, это загрузить файл XML с узлом HTML, а затем отобразить эту строку в текстовом поле, поскольку это будет отображаться.

Пример 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;
}

Это должно сработать, обратитесь ко мне, если вам нужна дополнительная помощь, я написал это на лету, так что здесь или там может быть опечатка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...