Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   оперирование с Child (http://www.flasher.ru/forum/showthread.php?t=142947)

In8Finity 03.08.2010 17:48

оперирование с 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);

Подскажите?

Zebestov 03.08.2010 18:17

вариант1:

Код AS3:

tmpSprite.gotoAndPlay(2);

вариант2:

Код AS3:

peoples.getChildByName('p3').gotoAndPlay(2);

вариант3:

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

P.S.

Код AS3:

var tmpSprite:MovieClip;

:mosking:

In8Finity 03.08.2010 18:34

Спасибо большущее! вариант 2 - то, что надо!

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

peoples.removeChild('p3');

не работает

lumaca 03.08.2010 18:59

А так работает?
Код AS3:

peoples.removeChild(getChildByName('p3'));


In8Finity 03.08.2010 19:03

Неа. Не хочет.
Выдаёт вот такое:
TypeError: Error #2007: Параметр child не должен быть равен нулю.

Zik. 03.08.2010 19:05

Вообще вы в первой строчке объявляете переменную
Потом в нее записываете ссылку на клип
Так почему бы эту переменную и не использовать?

In8Finity 03.08.2010 19:11

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

lumaca 03.08.2010 19:18

tmpSprite у тебя объявлен MovieClip, а метод removeChild() требует аргумента DisplayObject - может в этом дело?

In8Finity 03.08.2010 19:33

Раскопал свой старый исходник в котором была похожая ситуация.
Сработало. Но я никак не могу понять как и почему???
Итак.
Для удаления всего лишь одного объекта "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')); не работает?

Zebestov 03.08.2010 19:35

Цитата:

Сообщение от lumaca (Сообщение 926795)
А так работает?
Код AS3:

peoples.removeChild(getChildByName('p3'));


ну тогда уже
Код AS3:

peoples.removeChild(peoples.getChildByName('p3'));



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

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