В AS2, как объединить имена переменных?
Я пытаюсь перебрать набор текстовых полей, созданных в Flash IDE, и назвал их через панель свойств с именем "dot_text1, dot_text2 и т. Д.). Эти элементы текстового поля вложены в другой мувиклип, который называется" букет".
Моя проблема в том, что я пытаюсь перебрать все из них и сохранить их в массиве для последующего использования, но я продолжаю получать неопределенные значения, когда отслеживаю его. Я пишу скрипт в корне файла.
for (var i=0; i <11; i++) {
trace(["bouquet.dot_text" + i]);
}
Я явно что-то делаю не так:(. Спасибо.
1 ответ
Если вы хотите сохранить все элементы управления в массиве, это должно сделать это:
var inputs = new Array();
for (var i=0; i <11; i++) {
inputs.push(bouquet["dot_text" + i]);
}
В вашем примере вы говорите:
trace(["bouquet.dot_text" + i])
Что на самом деле говорит
"распечатать трассировку для одноэлементного массива, содержащего текст "quet.dot_text" + i
когда то, что вы хотите сказать
msgstr "распечатать трассировку для члена с именем"dot_text" + 1 в объекте с именем букет.
Так что ваш пример, вероятно, должен читать что-то вроде этого:
for (var i=0; i <11; i++) {
trace(bouquet["dot_text" + i]);
}
[редактировать]
ФП выразил недоумение по поводу использования "скобок для объединения имен переменных". На самом деле здесь происходит довольно интересная особенность семейства языков JavaScript: объекты также являются ассоциативными массивами, поэтому, когда вы объявляете объект следующим образом:
var obj = {member: "value"};
// now, obj.member == "value"
вы также можете получить доступ к его переменным-членам, как если бы это был ассоциативный массив:
obj["member"]
Теперь, поскольку вы можете использовать строку, представляющую имя члена, в качестве ключа для массива, очевидно, вы также можете объединить эту строку, поэтому:
var obj = {member1: "value1", member2: "value2"};
var value1 = obj["member" + 1];
var value2 = obj["member" + 2];
и это, конечно, то, что вы можете сделать с переменной цикла или что у вас есть.
В первоначальном примере OP неправильно то, что они не обращаются к массиву, а создают его:
// this accesses the "member" key in the assoc. array "obj"
var value = obj["member"];
// this creates a new 1-element array containing the string "member"
var array = ["member"];
Таким образом, скобки на самом деле не имеют ничего общего с объединением имен переменных; в одном контексте они обозначают литерал массива, в другом - доступ к массиву. Надеюсь, это немного прояснит ситуацию?:-)