我试图从php获取一些数据到flash并在动态文本字段中打印它。我知道这可能是一个愚蠢的问题,但我似乎无法弄清楚如何让flash处理代码text_field。Text = data.return_msg;而不需要事件监听器
所以我希望代码被处理一旦flash发现它基本上。
这是我现在拥有的:
var variables:URLVariables = new URLVariables("get_blog_info.php");
// Build the varLoader variable
var varLoader:URLLoader = new URLLoader;
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
trace(varLoader);
var data:URLVariables = new URLVariables(event.target.data);
title_txt.text = data.return_msg;
}
,我得到这个错误:
"1120:访问未定义的属性事件。"
我知道这是一个基本的问题,但我是新的闪光,所以任何帮助将非常感激。
谢谢
Web请求在Flash中只能是异步的。您别无选择,只能添加一个事件侦听器,以便在加载完成时得到通知,此时您可以访问数据。
文档显示了执行您正在寻找的操作的唯一方法。您必须等待,直到它接收到来自请求的信息,才能显示文本:
// notice: you want to have a request which points to the URL, not the variables.
var urlRequest:URLRequest = new URLRequest("get_blog_info.php");
var urlLoader:URLLoader = new URLLoader();
// it looks like you just want a string returned.
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(urlRequest);
function urlLoader_complete(evt:Event):void {
title_txt.text = urlLoader.data;
}
您需要实际监听您的加载器,以便检测它何时接收到来自PHP的响应。只有这样,您才能拥有事件对象和填充的数据属性。你应该这样做:
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onLoaded);
loader.load(new URLRequest("get_blog_info.php"));
function onLoaded(evt:Event):void
{
loader.removeEventListener(Event.COMPLETE,onLoaded); // recomended, to prevent memory leaks. if you will not be using this loader again.
title_txt.text = evt.target.data;
}
我故意忽略了你对URLVariables
的使用,因为我认为你误解了它的用途。您将使用名称/值对字符串创建URLVariables的实例,这些变量将被发送到PHP脚本。因为你似乎没有使用任何变量的请求,我忽略了它