2013-05-02 2 views
0

Эй, интересно, может ли кто-нибудь помочь мне, я пытаюсь добавить загрузку клипов для перемещения и сделать их кликабельными на сцену в сценарии действий 3, я могу определить расстояние между ними позже я просто продолжаю получать ошибки при попытке добавить их с помощью этого:Добавление фрагментов роликов для сценария действия для цикла 3

for(var x:int = 1; x <= 10; x++) 
     { 

      var this["cardPrint"+x] :MovieClip = new this["card_"+x](); 
      this.addChild(this["cardPrint"+x]); 
      this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]); 

     } 

точку в правильном направлении помогло бы много спасибо

+0

Ваш мультфильм «cardPrint» уже существует в libary - вы пытаетесь создать экземпляры этого? – whodeee

+0

Я пытаюсь создать экземпляры «cardPrint» – user2344403

ответ

0

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). Если это не так, вы не можете создать экземпляр, и он всегда будет ошибочным.

Я хочу предупредить вас, что это очень плохой способ свести это вместе. Комната для ошибки невероятно велика, и использование этого синтаксиса будет трудно сделать и трудно прочитать в вашем коде.

+0

Спасибо, я вернусь на чертежную доску и начну снова, я только начинаю с as3, еще раз спасибо – user2344403

+0

Нет проблем. Я настоятельно рекомендую хранить каждый объект в массиве (или даже общий «Object») вместо того, чтобы делать это таким образом. Как правило, использование этого синтаксиса ["varName"] 'используется для извлечения, а не для установки. Очевидно, есть исключения, но то, что вы пытаетесь сделать, обычно лучше всего решать с помощью массивов/векторов. –

+0

еще раз спасибо, вот что я сейчас пытаюсь сделать, я только начинаю, большое спасибо – user2344403

Смежные вопросы