学习将as3与XML和PHP一起使用,但卡住了



所以,我正在尝试学习如何使用XML和PHP来检索我的flash文件的服务器信息。我已经让它工作了。它提取信息并将其显示在我的 swf 文件中,但它仍然具有 XML 节点。

<itemm>example</itemm>

也许有人可以帮助我弄清楚我做错了什么。我很确定我在尝试块中错过了一些东西。这是我的as3代码:

var txtFld:TextField = new TextField();
txtFld.width = 500;
txtFld.height = 500;
txtFld.multiline = txtFld.wordWrap = true;
addChild(txtFld);
var req:URLRequest = new URLRequest("test.php");
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
urlLoader.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
urlLoader.load(req);
function onIOError(evt:IOErrorEvent):void {
    txtFld.text = "XML load error. n" + evt.text;
}
function onComplete(evt:Event):void {
    urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
    urlLoader.removeEventListener(Event.COMPLETE, onComplete);
    try {
        var loadedXML:XML = new XML(evt.target.data);
        txtFld.text = loadedXML.itemm;
} catch (err:Error) {
    txtFld.text = "XML parse error:n" + err.message;
}
}

尝试更改行:

txtFld.text = loadedXML.itemm;

。对于这个:

txtFld.text = loadedXML.itemm.text();

您必须记住,loadXML.itemm 将返回 XMLList,而不是 XML。这是因为您使用该语句执行的内容实际上是"给我所有类型为 itemm 的节点"。

你可以在这里看到XMLList的方法text()的文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XMLList.html#text()

如果你的 loadedXML 包含多个类型的 itemm 节点,text() 将返回一个 XMLList 列表,其中包含 itemms 的文本内容。如果要单独处理文本内容,可以执行以下操作:

for each(var itemm:XML in loadedXML.itemm.*) {
    trace(itemm.text());
}

最新更新