我正在努力连接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'。我猜我没有连接这个问题,这就是问题所在,但我不确定该如何做到这一点?
谢谢!
答案 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
连接为String
到chatString
的内容
如果您想通过变量名访问变量,我相信您会做这样的事情;
var chatString:String = chat_History.Msg["chatMessage"+ String(i+1)];
所以i+1
= 1,2,3。这意味着您正在访问chat_History.Msg.chatMessage1
,chat_History.Msg.chatMessage2
和chat_History.Msg.chatMessage3
删除该行;
chatString += i.toString();
我担心我无法测试这个,因为我没有XML代码,但希望这会给你一个大概的想法。我不是100%确定我通过变量名称调用变量是正确的,但是可以通过字符串名称调用变量。
编辑:
经过一些测试后,语法似乎是正确的,因此应该从chat_History.Msg