【问题标题】:AS3 Load Variables into Textfield from external XMLAS3 从外部 XML 将变量加载到文本字段中
【发布时间】:2014-12-14 19:49:22
【问题描述】:

我有一个输出 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 的引用访问可能未定义的属性 Username。

基本上这些 TxtElement 是动态文本(如标签)。

【问题讨论】:

  • XMLDocument 的意义何在?您的代码不包括对属性“用户名”的访问。您是否发布了所有代码?
  • 但我仍然可以收到值....
  • 我已经编辑了函数,现在看..
  • 现在我又遇到了一个错误:将 void 类型的值隐式强制转换为不相关的 String 类型。

标签: php xml actionscript-3 variables echo


【解决方案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

}

【讨论】:

  • 然后我们还需要给出 php 变量值的行吗?
  • 传递给跟踪函数的变量(myXML.Username)也可以设置为文本字段的文本属性。你可以用它做任何你想做的事情。
  • 现在我很困惑,我没有收到任何错误,但我的“userField”是空的。
  • 使用trace(myXML); 或直接在网络浏览器上打开脚本 (your.site/playerData.php) 验证您的 xml 是否包含数据。
  • 我的 XML 开始了' user 但是 textfield 好像看不到,为什么?
【解决方案2】:

这里不需要 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);
        }
    }
}

【讨论】:

  • 我已经看过了,但我发现创建一个简单的输出(没有 XML)更容易,所以在我的 php 中只是:
  • 打印 "&uName=$user";打印 "&uLevel=$level";在我的 AS3 中看这里:s1.postimg.org/bwlimqwhb/as3.png
  • 如果您对问题的答案不感兴趣,请不要在这里提问。谢谢。
  • 我很感兴趣,我只是无法用 XML 类型弄清楚,所以你对 XML 的回答是输出是:trace("username is:" + xml.Username),但那你为什么写“保罗”?而且我不明白如何将此输出放入文本字​​段。比如:username.text = trace(xml.username).
  • 我将 Paul 添加为虚拟值。您的 XML 包含来自 php 变量的值。我提供的示例按原样运行,并演示了如何访问 XML 结构中的数据。
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多