AS3 Загрузка переменных в текстовое поле из внешнего XML

У меня есть php-файл, который выводит данные XML, и у меня также есть SWF-файл, закодированный с AS3, где я хочу загрузить выход 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:

Доступ к возможно неопределенному свойству Username через ссылку со статическим типом flash.xml: XMLDocument.

В основном эти TxtElements представляют собой динамический текст (например, метки).

-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

Другие решения

Здесь нет необходимости в 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);
}
}
}
0

По вопросам рекламы [email protected]