this
является индикатор области действия, который указывает на текущий класс. Итак, this["cardPrint"+x]
на самом деле пытается найти переменную с этим именем, но вы не можете объявить переменную, которая уже является ссылкой.
Единственный способ сделать то, что вы хотите, как это:
public dynamic class Foobar
{
public function Foobar()
{
for(var x:int = 1; x <= 10; x++)
{
this["cardPrint"+x] = new this["card_"+x]();
this.addChild(this["cardPrint"+x]);
this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]);
}
}
}
Ключ делает класс dynamic
. Это позволяет создавать имена переменных во время выполнения и создавать их в строковой форме с использованием синтаксиса scope["varName"]
. Если вы делаете это на временной шкале в Flash Pro, так как я чувствую, что это так, это просто невозможно, как вы хотите это сделать. Вам было бы лучше создавать объекты в цикле и хранить их в массиве для доступа к ним таким образом, а не использовать синтаксис, описанный выше.
Тип данных каждого созданного объекта будет таким же, как и все созданные экземпляры, поэтому вы не сможете установить его как MovieClip
или аналогичный.
"card_"+x
также должен быть реальным объектом (a Class
). Если это не так, вы не можете создать экземпляр, и он всегда будет ошибочным.
Я хочу предупредить вас, что это очень плохой способ свести это вместе. Комната для ошибки невероятно велика, и использование этого синтаксиса будет трудно сделать и трудно прочитать в вашем коде.
Ваш мультфильм «cardPrint» уже существует в libary - вы пытаетесь создать экземпляры этого? – whodeee
Я пытаюсь создать экземпляры «cardPrint» – user2344403