我有一个输出XML数据的php文件,我还有一个用AS3编码的swf文件,我想在其中加载PHP的输出。
PHP代码:
echo "<root>
<Username>" . $xml1 . "</Username>
<XMLNode2>" . $xml2 . "</XMLNode2>
<XMLNode3>" . $xml3 . "</XMLNode3>
</root>";
AS3代码:
import flash.events.*;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.xml.XMLDocument;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest("playerData.php"));
var variables:URLVariables = new URLVariables();
function onLoaded(evt:Event):void
{
var xDoc:XMLDocument = new XMLDocument();
xDoc.ignoreWhite = true;
loader.resultFormat = "e4x";
var myXML:XML = loader.data as XML;
xDoc.parseXML(myXML.toString());
user_name.text = trace(xDoc.Username);
}
这是我在AS3代码中遇到的错误:
通过带有静态类型flash.xml的引用访问可能未定义的属性用户名:XMLDocument。
基本上那些TxtElements是dinamic文本(如标签)。
答案 0 :(得分:1)
您可以这样做:
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest('playerData.php'));
function onLoaded(evt:Event):void
{
var myXML:XML = new XML(evt.target.data);
trace(myXML.Username); // gives : the value of your php $xml1 var
userField.text = (myXML.Username).toString(); // we don't need trace() to assing a value to a textfield
}
答案 1 :(得分:0)
这里不需要XMLDocument。 您只需要XML类。
查看其文档中的XML类示例: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html#includeExamplesSummary
这是一个对xml数据进行操作的示例类:
package
{
import flash.display.Sprite;
public class FlashTest extends Sprite
{
public function FlashTest()
{
var xml:XML =
<root>
<Username>Paul</Username>
<XMLNode2> </XMLNode2>
<XMLNode3></XMLNode3>
</root>;
trace("username is: " + xml.Username);
}
}
}