Ссылка на объединение 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

Другие вопросы по тегам