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

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

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

Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
По умолчанию Динамическое создание клипа внутри клипа

Вот такой вопрос.
Есть некий клип, копии которого создаются следующим образом (упрощенный пример):

Код AS3:
for (var i = 0; i <= 10; i++) {
var mc:Reps = new Reps();
addChild(mc);
mc.x = i+10;
}
Допустим, перед циклом есть некий другой клип, в который я хочу поместить все дубликаты.
Я пишу:

Код AS3:
некий клип.addChild(mc)
Это правильно?

Как далее обращаться к этому дочернему клипу внутри цикла? некий клип[mc] правильно или нет?
А если я хочу к этому дочернему клипа привязать слушатель, как мне к нему обращаться? Внутри функции слушателя, если ничего не путаю, то через target.

Заранее thanks!

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1) mc это переменная ("var mc:Reps"), которая хранит ссылку на клип, пока не будет пересоздана в следующей итерации цикла. Так и надо обращаться. Неважно, в каком контейнере окажется клип. Переменная все-равно хранит на него ссылку. И уж конечно, у контейнера не появится откуда ни возьмись свойство с именем "mc".
2) если точнее, то currentTarget.
__________________
Reality.getBounds(this);

Старый 20.04.2012, 00:23
Сeргей вне форума Посмотреть профиль Отправить личное сообщение для Сeргей Найти все сообщения от Сeргей
  № 3  
Ответить с цитированием
Сeргей

Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
Так а как в цикле клип создать внутри уже существующего клипа-переменной?
Пробовал var некий клип.mc:Reps = new Reps() и некий клип[mc]:Reps = new Reps() выскакивают ошибки Syntax error: expecting semicolon before dot для первого варианта и expecting semicolon before leftbracket для второго.

Старый 20.04.2012, 11:23
RJ Presto вне форума Посмотреть профиль Отправить личное сообщение для RJ Presto Найти все сообщения от RJ Presto
  № 4  
Ответить с цитированием
RJ Presto

Регистрация: Nov 2007
Сообщений: 55
если вы хотите просто перебрать все дочерние клипы - то вот так

Код:
var container:Sprite; // это контейнер, куда складывались все экземпляры Reps

for (var i = 0; i < container.numChildren; i++) {
  var mc:Reps = container.getChildAt(i) as Reps;
  // делаем какие-то действия с mc
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Хранить ссылки на клипы в массиве, например
Код AS3:
var container:Sprite = new Sprite();
addChild(container);
// создаем в цикле экземпляры Reps и заполняем массив
var repses:Array = new Array();
for(var i:uint = 0; i < 10; i++)
{
	var mc:Reps = new Reps();
	container.addChild(mc);
	repses.push(mc); 
}
// В каждый экземпляр Reps из массива добавляем новый клип класса SomeClip
var someClips:Array = new Array();
for(var i:uint = 0; i < 10; i++)
{
	var somMC:SomeClip = new SomeClip();
	someClips.push(somMC);
	var mc:Reps = reps[i] as Reps;
	mc.addChild(someMC);
}
Но это все неудобно, когда начинаются вложенности. Надо учиться писать в классах, писать свои классы объектов, у которых были бы предусмотрены собственные свойства. То есть у каждого экземпляра Reps например было бы свойство, хранящее ссылку на его собственный экземпляр SomeClip. Так, как Вы порываетесь писать – "некий_клип.mc". Это свойство "mc" надо объявлять в классе Reps, чтобы оно стало доступным свойством любого экземпляра Reps.
__________________
Reality.getBounds(this);

Старый 20.04.2012, 23:26
Сeргей вне форума Посмотреть профиль Отправить личное сообщение для Сeргей Найти все сообщения от Сeргей
  № 6  
Ответить с цитированием
Сeргей

Регистрация: May 2011
Адрес: Санкт-Петербург
Сообщений: 44
Большое спасибо!
Раскрыли глаза на очевидную и очень нужную вещь.

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

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

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


 


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


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