|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
ZackMercury, обалдеть, кратко и эффективно. Всё заработало, спасибо!
Пошёл восхищаться и дальше учить мат. часть. Добавлено через 3 часа 29 минут Ещё раз поклон камраду ZackMercury, реализовал его совет в классе-хранителе игровых имён с выдачей оных в нужном падеже. Там же решено было складировать фамилии, наименования локаций и все прочие имена существительные, которые придётся по ходу игры склонять. Сначала написал несколько однотипных методов-получателей элементов созданных объектов по идентификатору и номеру падежа. Примерно так: public class NamePool { static private var firstName:Object = // Имена всех персонажей во всех падежах { (GlobalValues.CHARACTER_HERO as String): ["Джек", "Джека", "Джеку", "Джека", "Джеком", "Джеке"], (GlobalValues.CHARACTER_APRIL as String): ["Маша", "Машу", "Маше", "Машу", "Машей", "Маше"] } public function NamePool():void {} static public function getfirstName(characterID:String, languageCase:uint):String //Получить имя по ID персонажа {return firstName[characterID][languageCase]; } А вот как синтаксически сделать корректное обращение, мне не допереть. Просьба помочь. Спасибо. Последний раз редактировалось Appleman; 12.09.2017 в 01:35. |
|
|||||
Вообще, как правило, подобное не хранят в коде. Эта инфа выгружается в какой-то декларативный язык, вроде JSON/XML. Но как синтаксически возможный вариант:
P.S. В ASC2 скобки при объявлении ключа ассоциативного массива не работают.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 12.09.2017 в 18:25. |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Спасибо, будем пробовать.
Согласен, что правильнее в XML. Но это мой первый проект, и так башка пухнет даже от простейших вещей типа синтаксиса. И если я могу вручную забить несколько примеров типа выложенных выше и поэкспериментировать с кодом, то XML формировать - целое отдельное дело. Насколько я понимаю, никто его руками и не формирует обычно. Так что это оставлю на будущее. |
|
|||||
Руками не формируют, в AS3 есть специальный класс для этого.
http://help.adobe.com/ru_RU/ActionSc...0204-7ff5.html
__________________
There is no thing in this world that is not simple. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Еще "поиграться": package { public class Quest { private static const EPISODES_TEXT:Array = [ /* 000 */ "Если бы кто-то сказал Волку, что Красная Шапочка окажется дочкой *$n1 *$N1, он вряд-ли бы решился на преступление. Перейти дорогу *$n2 совсем не входило в его планы.", /* 001 */ "Волк уже однажды встречался с *$N4, и эта встреча до сих пор отзывалась в его памяти болью унижения.", /* 002 */ "Новой встречи с *$n4 Волк боялся как огня." ] public static function getText(episode:int, character:String) : String { var text:String = EPISODES_TEXT[episode]; for (var i:uint = 0; i < 6; i++) { text = text.replace("*$n" + i, Names.getName(character, Names.FIRST_NAME, i)); text = text.replace("*$N" + i, Names.getName(character, Names.FAMILY_NAME, i)); } return text; } } } ////********************************************* package { public class GlobalValues { static public const CHARACTER_HERO:String = "hero"; static public const CHARACTER_APRIL:String = "april"; } } ////********************************************* package { public class Names { static public const FIRST_NAME:String = "firstName"; static public const FAMILY_NAME:String = "familyName"; static private const firstName:Object = // Имена всех персонажей во всех падежах { (GlobalValues.CHARACTER_HERO as String): ["Джек", "Джека", "Джеку", "Джека", "Джеком", "Джеке"], (GlobalValues.CHARACTER_APRIL as String): ["Маша", "Маши", "Маше", "Машу", "Машей", "Маше"] } static private const familyName:Object = // Фамилии всех персонажей во всех падежах { (GlobalValues.CHARACTER_HERO as String): ["Николсон", "Николсона", "Николсону", "Николсона", "Николсоном", "Николсоне"], (GlobalValues.CHARACTER_APRIL as String): ["Шарапова", "Шараповой", "Шараповой", "Шарапову", "Шараповой", "Шараповой"] } static public function getName(character:String, nameType:String, nameCase:int) :String { return Names[nameType][character][nameCase]; } } } ////********************************************* package { import flash.display.Sprite; public class Main extends Sprite { public function Main() { trace(Quest.getText(0, GlobalValues.CHARACTER_HERO)); trace(Quest.getText(1, GlobalValues.CHARACTER_HERO)); trace(Quest.getText(2, GlobalValues.CHARACTER_HERO)); trace("\n"); trace(Quest.getText(0, GlobalValues.CHARACTER_APRIL)); trace(Quest.getText(1, GlobalValues.CHARACTER_APRIL)); trace(Quest.getText(2, GlobalValues.CHARACTER_APRIL)); } } }
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Wolsh, ну ты просто добрый волшебник! Я как раз начал задумываться о том, как можно технологично предусмотреть подстановку строковых переменных в заранее созданные куски текста. Спасибо.
Скажи, а добавлять в текст заготовки под будущую подстановку значений в виде *$n1 *$N1 - это чисто твой креатив или подобный формат *$ - результат требований AC3 или какого-либо соглашения, принятого среди программистов? public static function getText(episode:int, character:String) : String { var text:String = EPISODES_TEXT[episode]; for (var i:uint = 0; i < 6; i++) { text = text.replace("*$n" + i, Names.getName(character, Names.FIRST_NAME, i)); text = text.replace("*$N" + i, Names.getName(character, Names.FAMILY_NAME, i)); } return text; } Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
На счёт своего вопрос я имел в виду другую твою реплику, которую не процитировал: Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
Скажем, окну настроек Персонажа не нужно знать названий локаций. Да если и нужно, дело не в этом. Просто люблю банальный порядок, когда мухи отдельно, котлеты отдельно. Да, с технической стороны они может быть одно и то же. Ну тогда и названия одежды, и еды в холодильнике, и товаров у торговца, и документов в шкафу у следователя. Тогда все в кучу? Фу.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 13:10. |
|
« Предыдущая тема | Следующая тема » |
|
|