Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.09.2008, 03:30
newon вне форума Посмотреть профиль Отправить личное сообщение для newon Найти все сообщения от newon
  № 1  
Ответить с цитированием
newon

Регистрация: Sep 2005
Сообщений: 12
По умолчанию Динамическое создание объектов

На досуге начал изучать AS3, и сразу же столкнулся с простейшей проблемой.
Суть вот в чем:
в AS2 я аттачил множество похожих мувиклипов на сцену, динамически создавая им имя, вот так:

Код:
for (i=0; i<5; i++) {
mcName = "newMc"+i;
this.attachMovie("sampleMc",mcName,this.getNextHighestDepth());
this[mcName].sampleVar = 123;
}
На AS3 код выглядит так:
Код:
for (i=0; i<5; i++) {
var mcName:String = "newMc"+i;
var this[mcName] = new sampleMc();			
addChild(this[mcName]);
this[mcName].sampleVar = 123;
}
в результате, ничего не пашет.

Что я делаю не так, и как правильно задавать имена и в последствии обращаться к динамически создаваемым объектам и переменным?
Заранее всем спасибо за помощь

Старый 03.09.2008, 05:05
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 2  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Почему это ничего не пашет. У меня все пашет:
Код:
for (var i=0; i<5; i++) {
var mcName:String = "newMc"+i;
this[mcName] = new MovieClip();			
addChild(this[mcName]);
this[mcName].sampleVar = 123;
}
trace (this[mcName]);

Старый 03.09.2008, 06:09
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 3  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ты уверен что в линкейджах все верно указал?
да и никто так не делает. в ас3 название присваиваются автомтом.
делать надо вот так
Код:
var movieClipArray:Array=new  Array();
for(var i:uint=0;i<10;i++){
movieClipArray[i]=new SimpleMC();//1, классы называют с большой буквы 2, линкедж должен быть прописан
addChild(movieClipArray[i]);
}

Старый 03.09.2008, 10:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Почему-то никто не делает ссылку на клип, предпочитая заставлять машину дергать эту ссылку по индексу из массива при любом чихе.

Старый 03.09.2008, 12:41
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 5  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
предлагаешь сделать так?
Код:
var movieClipArray:Array=new  Array();
var moviePointer:MovieClip;
for(var i:uint=0;i<10;i++){
       moviePointer=new SimpleMC();
       addChild(moviePointer);
       movieClipArray[i]=moviePointer;
}
moviePointer=null;
я правильно тебя понял?


Последний раз редактировалось ramshteks; 03.09.2008 в 12:44.
Старый 03.09.2008, 12:46
newon вне форума Посмотреть профиль Отправить личное сообщение для newon Найти все сообщения от newon
  № 6  
Ответить с цитированием
newon

Регистрация: Sep 2005
Сообщений: 12
Да, действительно, такой код заработал:

Код:
var myTestArray:Array = new Array();
for (var i:Number =0; i<5; i++) {
	myTestArray[i]=new testMovie();
	addChild(myTestArray[i]);
	myTestArray[i].x=10*i;
}
Всем спасибо за помощь! И правда, так гораздо удобнее, когда не приходится обращаться к объекту строго по имени =)
По-моему, ситуация встречается довольно часто, её бы в FAQ закинуть

Старый 03.09.2008, 14:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ramshteks Посмотреть сообщение
я правильно тебя понял?
Правильно. Автор темы, к сожалению, нет.

Старый 03.09.2008, 19:25
newon вне форума Посмотреть профиль Отправить личное сообщение для newon Найти все сообщения от newon
  № 8  
Ответить с цитированием
newon

Регистрация: Sep 2005
Сообщений: 12
Цитата:
Сообщение от __etc Посмотреть сообщение
Правильно. Автор темы, к сожалению, нет.
Спасибо за помощь, все отлично понял. Просто посты написали почти одновременно. =)

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.