У меня есть 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 представляют собой динамический текст (например, метки).
Вы можете просто сделать:
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
}
Здесь нет необходимости в 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);
}
}
}