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

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

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

Регистрация: Jan 2010
Сообщений: 187
Question оперирование с Child

Я генерю на сцене чилдрена случайным образом.
Вот так:
Код AS3:
var tmpSprite:MovieClip;
...............
rnd = 1+(Math.random()*3);
 
if (rnd==1) {tmpSprite = new People1();} 
if (rnd==2) {tmpSprite = new People2();} 
if (rnd==3) {tmpSprite = new People3();} 
peoples.addChild(tmpSprite);
tmpSprite.x = 230;
tmpSprite.name = "p3";
А вот как мне потом этим чилдреном оперировать?
Я попробовал вот так, но не работает.

Код AS3:
peoples.p3.gotoAndPlay(2);
Подскажите?

Старый 03.08.2010, 18:17
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
вариант1:

Код AS3:
tmpSprite.gotoAndPlay(2);
вариант2:

Код AS3:
peoples.getChildByName('p3').gotoAndPlay(2);
вариант3:

хранить ссылки на все необходимые объекты в переменных/массивах

P.S.

Код AS3:
var tmpSprite:MovieClip;
__________________
Поймай яблоко 2!

Старый 03.08.2010, 18:34
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 3  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Спасибо большущее! вариант 2 - то, что надо!

Добавлено через 15 минут
А как мне потом удалить этого чилдрена, используя его имя p3 ?
Код AS3:
peoples.removeChild('p3');
не работает

Старый 03.08.2010, 18:59
lumaca вне форума Посмотреть профиль Отправить личное сообщение для lumaca Найти все сообщения от lumaca
  № 4  
Ответить с цитированием
lumaca

Регистрация: Sep 2009
Сообщений: 61
А так работает?
Код AS3:
peoples.removeChild(getChildByName('p3'));

Старый 03.08.2010, 19:03
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 5  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Неа. Не хочет.
Выдаёт вот такое:
TypeError: Error #2007: Параметр child не должен быть равен нулю.

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

Регистрация: Nov 2007
Сообщений: 1,724
Вообще вы в первой строчке объявляете переменную
Потом в нее записываете ссылку на клип
Так почему бы эту переменную и не использовать?

Старый 03.08.2010, 19:11
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 7  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Если я правильно понимаю, у меня там создаётся много экземпляров tmpSprite.
И им присваиваются разные имена.
tmpSprite.name = "p1";
tmpSprite.name = "p2";
tmpSprite.name = "p3";
А в другой части программы, в зависимости от произошедшего события, мне надо удалить именно именно определённый tmpSprite, к примеру, с именем p3

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

Регистрация: Sep 2009
Сообщений: 61
tmpSprite у тебя объявлен MovieClip, а метод removeChild() требует аргумента DisplayObject - может в этом дело?

Старый 03.08.2010, 19:33
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 9  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Раскопал свой старый исходник в котором была похожая ситуация.
Сработало. Но я никак не могу понять как и почему???
Итак.
Для удаления всего лишь одного объекта "p3" я использовал сделующую конструкцию:

Код AS3:
var child:DisplayObject=peoples.getChildByName('p3');
if (child is People1) {	var box:People1=child as People1; peoples.removeChild(box);}
if (child is People2) {	var box2:People2=child as People2; peoples.removeChild(box2);}
if (child is People3) {	var box3:People3=child as People3; peoples.removeChild(box3);}
Кто-нибудь может объяснить, что этоза штука и почему так работает, а
peoples.removeChild(getChildByName('p3')); не работает?

Старый 03.08.2010, 19:35
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от lumaca Посмотреть сообщение
А так работает?
Код AS3:
peoples.removeChild(getChildByName('p3'));
ну тогда уже
Код AS3:
peoples.removeChild(peoples.getChildByName('p3'));
__________________
Поймай яблоко 2!

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

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

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


 


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


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