[英]AS3/Java/HTML: Get flash to respond to external html/java events
[英]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.