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

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

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
По умолчанию Когда стоит использовать обращение getChildAt и getChildByName?

Привет! Возникла вполне банальная ситуация...есть 2 мувиклипа контейнера...в первом есть 20 объектов, которые генерятся в for'e из одного объекта в библиотеке. Во втором контейнере есть кнопка, которая удаляет эти объекты(в первом контейнере) по очереди, т.е. один за другим. Т.к. в данном случае при обращении к нужному объекту необходимо указывать на 2 уровня в глубину - не получается использовать метод getChildAt и getChildByName, т.е. строка типа parent.getChildAt(i).getChildByName("ball"+i) не прокатывает. Следовательно вопрос - обязательно ли в этом примере загонять все создаваемые объекты в массив, а потом уже обращаться к ним как к элементам массива, или всё таки можно как то использовать выше приведённые методы? И в каких случаях их вообще желательно/не желательно использовать.
И ещё один вопросик...используя метод removeChild для удаления объектов необходимо записывать - "путь к удал. объекту".removeChild("путь к удал. объекту" + имя самого объекта), или можно в скобках обойтись только именем смого удаляемого объекта?
Спасибо за помощь!

Старый 14.04.2010, 04:39
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Обращение к элементам массива быстрее, чем вызов методов getChildAt и getChildByName. Для 20 объектов, конечно, не критично.
removeChild получает ссылку на объект. Типо того, что возрващают getChildAt и getChildByName.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 14.04.2010, 04:39
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 3  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Первый вопрос непонятен, отвечу на второй. Методу removeChild не нужно передавать никаких путей и имен, все это осталось далеко в AS1. getChildByName("ball" + i) тоже оттуда, избавляйтесь от такого. Метод removeChild принимает ссылку на объект, которую можно получить при помощи тех же getChildByName() и getChildAt().

Если вам нужно удалить всех детей внутри какого-то контейнера, то самый простой и эффективный способ - сделать так:
Код AS3:
while(someContainer.numChildren)someContainer.removeChildAt(0);
__________________
тонкий тролль, осеянный благодатью

Старый 14.04.2010, 04:49
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 4  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
В том то и дело, что мне нужно удалять их не сразу а при последовательном нажатии на кнопку которая находится не в основной сцене, а в другом контейнере! И интересует способ с относительной адресацией! Т.е. как мне выйти из этого контейнера, обратится к первому контейнеру и удалить из него первого попавшегося ребёнка!

Старый 14.04.2010, 14:38
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
В контейнере, общем для кнопки и того контейнера, из которого вы хотите удалять детей, подписаться на MouseEvent.CLICK. Типа вышли. В обработчике события получить ссылку на нужный контейнер, который является дочерним, при помощи getChildAt/getChildByName. Типа вошли. Удалить первого попавшегося - почти так же:
Код AS3:
if(someContainer.numChildren)someContainer.removeChildAt(0);
__________________
тонкий тролль, осеянный благодатью

Старый 18.04.2010, 01:48
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 6  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
спасибо!

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

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

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


 


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


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