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

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

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

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Attention for each глючит?

Есть мувик (m1) в котором мувик (m2), в котором мувики (aaa,bbb).
Пишу в первом кадре каждого мувика по очереди:
Код AS3:
for each ( var obj:Object in this)
{
	trace("Объект="+obj);
 
}
в итоге Flash CS5 пишет болт, извините за жаргон.
Почему?
Должен же отображать объекты.

Старый 08.02.2011, 13:58
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
С чего бы это?
Эти мувики - объекты времени компиляции, поэтому ничего и не выводит.

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
я так понимаю вы хотите пробежаться по DisplayObject'ам родителя?
вот пример:
Код AS3:
public static function getAllChildren(container:Sprite):Array {
			var allChildren:Array = new Array();
			var l:uint = container.numChildren;
			while (l--) {
				allChildren.push(container.getChildAt(l));
			}
			return allChildren;
		}
__________________
Flash Developer
Папа TDP4 Team Battle

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

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Я хочу пройтись по чайлдам мувика и подписать их на события КЛИК.
Через for each проще, нежели через дополнительный массив из которого потом доставать.
Но странность заключается в том, что в другом аналогичном примере всё срабатывает через for each, но только на уровне первого мувика. Т.е. я в мувике m1 пишу код в первом кадре и в итоге трейсятся его чайлды.

Старый 08.02.2011, 14:09
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Крейзи. Ваш метод не пройдет. Здесь нужно создавать вложенные циклы. В данный момент у вас реализация на детей одного родителя, а вы не рассматриваете случай, когда у детей родителя тоже есть дети, они сами родители .... и т.д. ))

Добавлено через 2 минуты
Код AS3:
for each ( var obj:DisplayObject in this)
{
	if(obj is MovieClip) trace ((obj as MovieClip).name)
 
}
Поробуй чтоль

Старый 08.02.2011, 14:22
3Desian вне форума Посмотреть профиль Отправить личное сообщение для 3Desian Найти все сообщения от 3Desian
  № 6  
Ответить с цитированием
3Desian
 
Аватар для 3Desian

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Не работает так же , как и мой код
А ещё странно, что он таки определяет колличество чайлдов:
Код AS3:
var ob:MovieClip = this.getChildByName("m1") as MovieClip;
trace(ob.numChildren); //выдаёт 1, т.к. один объект там "m2"

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

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
in4core, через for each нельзя достать детей у DisplayObjectContainer


3Desian, юзайте numChildren и for
Код AS3:
var len:int = this.numChildren;
for ( var i:int = 0; i < len; i++){
 	trace(this.getChildAt(i))
}
__________________
freelance | Раздор


Последний раз редактировалось derhab; 08.02.2011 в 15:33.
Старый 08.02.2011, 14:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
for each перечисляет только динамические свойства.

Старый 08.02.2011, 14:42
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Ну есть же разница между ребёнком и внуком. Внук - не твой ребёнок!
Код AS3:
public static function getAllChildren(container:DisplayObjectContainer):Array {
			var l:uint = container.numChildren;
			while (l--) {
				var child:DisplayObject = container.getChildAt(l);
				child.getChildAt(l).addEventListener(MOUSE_EVENT.CLICK, YaNeNorkomanNet);
				if(child is DisplayObjectContainer) getAllChildren(child as DisplayObjectContainer);
			}
		}
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 08.02.2011, 14:49
3Desian вне форума Посмотреть профиль Отправить личное сообщение для 3Desian Найти все сообщения от 3Desian
  № 10  
Ответить с цитированием
3Desian
 
Аватар для 3Desian

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Спасибо, добрые люди. Помог метод CrazyFlasher.

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

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

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


 


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


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