Я ищу способ уплотнения некоторых из моих AS3-кода, чтобы избежать почти дублирующих команд.AS3 таргетинг на класс контроллера с использованием строки
Проблема в том, что у меня есть несколько переменных с почти одним и тем же именем, например. frenchLanguage, englishLanguage, germanLanguage, spanishLanguage
Класс My Controller содержит общедоступные статические переменные (к ним обращаются через несколько классов), и мне нужен способ динамического вызова нескольких из этих переменных. Если переменные в классе вы вызываете их вы можете сделать это, чтобы получить доступ к ним динамически:
this["spanish"+"Language"]
В AS3 это не возможно, чтобы написать что-то вроде:
Controller.this["spanish"+"Language"]
Есть ли какие-либо способ достичь этого? Хотя все работает, я хочу, чтобы мой код был как можно более минимальным.
Почему бы просто не использовать статический dictionairy в вашем классе контроллера? – DodgerThud
Можете ли вы немного рассказать об этом? – AntBirch
[Ссылка] (http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Dictionary.html) Создайте публичную переменную статического словаря в вашем контроллере. Строка, которую вы сейчас проходите («spanishLanguage», например »), будет ключом для объекта, который содержит вашу нужную информацию. Предполагая, что Dictionairy называется' languages', вы можете называть его следующим образом: 'Controler.languages [" spanishLanguage " ] ' – DodgerThud