AS3从外部XML将变量加载到Textfield中

时间:2014-12-14 19:49:22

标签: php xml actionscript-3 variables echo

我有一个输出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文本(如标签)。

2 个答案:

答案 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);
        }
    }
}