Ссылка на объединение AS3 не работает
Я изо всех сил пытаюсь объединить ссылку на переменную из документа 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 ответ
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