Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   "Метки-переменных" в XML (http://www.flasher.ru/forum/showthread.php?t=177861)

ramshteks 11.04.2012 00:20

strangedk, вы путаете кислое с длинным. Если будет нужно иметь несколько сборок этого приложения - заюзаем ант. Если необходимо будет выяснять увидел пользователь текст или нет то внешний логгер. Если текст должен на 100 языках сделаем локализацию. Даже если на начальном этапе нужно будет всего один, а 99 появятся позже.

Есть задача. И если вы не понимаете, что задача это не только "здесь и сейчас", а еще и "завтра, послезавтра и через месяц", то вы обречены бороться со своевременной неоптимизацией.

Кроме всего переходить на частные крайности вроде вашего примера, просто не корректно и вы надеюсь это понимаете.

strangedk 11.04.2012 01:46

Ну если вернуться к сути вопроса - то повторюсь, что я совсем не в курсе масштабов задания.

Если нужно по быстрому, "сделали-забыли", и не сильно заморачиваясь - я бы не брался писать парсер подставляемых переменных. Это не оправданно.

Если проект интересный, и перспективный - то конечно и самому хочется сделать его максимально гибким.
И думаю я бы не остановился на XML.

Dukobpa3 11.04.2012 12:44

Код AS3:

text = "у вас осталось {{tries}} попыток"
name = "tries"
value = String(10)
 
text = text.replace(new RegExp("{{" + name + "}}", "g"), txt);
 
trace(text) // "у вас осталось 10 попыток"


strangedk 11.04.2012 12:52

Dukobpa3, хорошее решение, тоже думал в эту сторону.

Я думаю добавил бы связку name-value в Dictionary, и чтобы по имени сразу можно было обратиться к значению.

zuxul 11.04.2012 12:55

Dictionary может не подойти, нужен Object, у него ключи строковые

Dukobpa3 11.04.2012 12:55

Ну вообще у нас так же сделано как вот в этом варианте.
Просто получаем строку, и обжект с именами для замены.

Universe 11.04.2012 13:19

Цитата:

так вот эту вещь удалите:
Да, теперь всё работает! Большое спасибо за помощь, ramshteks! :)

ramshteks 11.04.2012 13:26

Dukobpa3, strangedk, решение с регекспами у меня тоже есть. Но оно немного для других целей. Оно гораздо проще, но и подходит далеко не всегда:
Код AS3:

private static const regexVar:RegExp = /%[A-Za-z]*%/;
 
                /**
                * Modified and return string, user var name having format "%varname%"
                * @example StringUtils.printf("Some text, %var%, %var2%, %var%", 1, "test", {});
                * return "Some text, 1, test, [object Object]"
                * @param        string formatted string
                * @param        ...args arguments to insert into
                * @return modified string
                */

                public static function printf(string:String, ...args):String {
                        var res:String = string;
                        for each(var p:String in args) {
                                res = res.replace(regexVar, p);
                        }
                        return res;
                }


in4core 11.04.2012 13:47

Цитата:

Dictionary может не подойти, нужен Object, у него ключи строковые
ЭЭЭ а у словарика не могут чтоли быть? ))))))))))))

Universe 11.04.2012 14:19

Теперь возник вопрос, а можно ли что-то подобное сделать но с функциями?)) Т.е. чтобы вместо текста выполнялся метод выбранного объекта))


Часовой пояс GMT +4, время: 12:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.