![]() |
"Метки-переменных" в XML
Такой вопрос: есть ли такая фича при написании строки в xml как то указывать не текст а "метку" которая будет говорить компилятору, чтобы он искал в пределах данного класса переменную и подставлял её вместо метки в результирующую строку? Или это можно сделать только при помощи методов класса String?
|
Вас непонятно. Вы компилируете xml?
|
я загружаю строку из xml, но хочу чтобы в ней содержалась ссылка на переменную которая есть у меня в классе, в котором я эту строку использую. Т.е. вот строка из xml
"Попробуйте ещё раз! У вас осталось %tries% попытки!" Переменная tries у меня объявлена в классе сверху. Хочется чтобы получилось как то вот так: "Попробуйте ещё раз! У вас осталось" + tries + "попытки!" |
Код AS3:
EDIT: А... XML уже готовый? Ну тогда нет, нет ничего специально заготовленного, надо самому. |
регулярным выражением, через replace ? А как перевести в строку имя переменной?
|
Переменные бывают связаными в лексическом окружении и статическом / динамически (lexical binding and static / dynamic binding). Первый случай - внутри функции аргументы и локальные переменные связаны лексически с контекстом функции. Имена таких переменных не хранятся в скомпилированом коде. Статически / динамически связанные переменные - например, поля класса, их, естественно, можно получить как объект[имя свойства], т.как имена хранятся в скомпилированом коде.
Так что если речь о лексической привязке - то только вручную, типа: string.replace(/variable/g, variable); |
Ну при таком раскладе тебе нужно что-то вроде своего мета-языка небольшого изобрести. То есть смотри как - есть 2 вещи:
- xml с заготовками - хранилище данных (оттуда берем данные для подстановки) так вот, имея xml вида: Код AS3:
То есть берем наше хранилище, берем у него свойство player, у того что получили берем свойство numTries. То что получили - кладем в xml вместо выражения [player.numTries]. Ну и выводим результат уже с подстановкой. Кстати, очень крутая система, туда же можно прикрутить условия, вычисления и локализацию. Даже вызовы методов можно. Главное задать "контекст исполнения" - в рассмотренном выше примере это хранилище данных. |
вот у темя есть нужная для вас функция:
Код AS3:
Добавлено через 49 секунд правда никакой привязки к xml нет, поэтому из xml вам самому придется выдрать строку-шаблон |
о, супер, большое спасибо ramshteks! Сейчас попробую!))
Добавлено через 21 минуту чтото не пашит((( Засунул вашу функцию в свой класс MyUtils, вызываю следующим образом Код AS3:
|
метод писался под такое использование:
printfwv("a123 %tries% vsvs", {tries:"TEST String"}); Для вашего варианта, даже не проверялось, так что подсказать не могу тоесть должен работать вот такой вариант: printfwv("a123 %tries% vsvs", {tries:String(this.tries)}); Добавлено через 10 минут Я прошу прощения, сейчас обнаружил, что функция действительно не корректно работает |
| Часовой пояс GMT +4, время: 11:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.