AS3连接参考不起作用

时间:2015-01-03 05:28:30

标签: actionscript-3 concatenation

我正在努力连接XML文档中对变量的引用。我想要得到:

chat_History.Msg.chatMessage1, chat_History.Msg.chatMessage2, chat_History.Msg.chatMessage3

它反过来超过引用并转换为值'0','1','2'。我的代码:

    public function onReceivedChatData(Event:LoaderEvent)
{
    var raw_user_info = LoaderMax.getContent("chatHistory");
    var chat_History:XML = XML(raw_user_info);

    if (chat_History.Msg) 
    {
        trace("ReceivedChatData");
        trace(chat_History);                        

        for (var i:int = 0; i < int(chat_History.chatLength); i++)
        {
            var chatString:String = chat_History.Msg.chatMessage;
            chatString += i.toString();

            shopchatbox.shop_chat_window.text = shopchatbox.shop_chat_window.text + "\n" + chatString;
            shopchatwidebox.shop_chat_window.text = shopchatwidebox.shop_chat_window.text + "\n" + chatString;

        }
    }
    else
    {
        trace("chat_History XML Does Not Exist!!! Noooo :( ");
        trace(chat_History);
    }
}

chatLength为3,它正确调用for语句3次,但是chatString没有正确引用它的变量(字符串),只显示为'0','1','2'。我猜我没有连接这个问题,这就是问题所在,但我不确定该如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

chatString += i.toString();

这将为您提供索引0,1,2 i只存储迭代的增量。不是来自chat_History.Msg.chatMessage的值,因此您要将i添加到chatString内容,而不是设置变量名称。

var chatString:String = chat_History.Msg.chatMessage;
chatString += i.toString();

您的代码在此处显示,取chatString,并将其设置为值chat_History.Msg.chatMessage,然后将i连接为StringchatString的内容

如果您想通过变量名访问变量,我相信您会做这样的事情;

var chatString:String = chat_History.Msg["chatMessage"+ String(i+1)];

所以i+1 = 1,2,3。这意味着您正在访问chat_History.Msg.chatMessage1chat_History.Msg.chatMessage2chat_History.Msg.chatMessage3

删除该行;

chatString += i.toString();

我担心我无法测试这个,因为我没有XML代码,但希望这会给你一个大概的想法。我不是100%确定我通过变量名称调用变量是正确的,但是可以通过字符串名称调用变量。

编辑:

经过一些测试后,语法似乎是正确的,因此应该从chat_History.Msg

获取值