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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.06.2013, 19:24
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию RemoveChildren by Class

Код AS3:
public static function removeChildrenByClass(cls:* , target:DisplayObjectContainer):void
		{
			for (var i:int = 0; i < target.numChildren; i++)
			{
				var search:* = target.getChildAt(i) as cls;
				if (search) target.removeChildAt(i--);
			}
		}
Собственно меня интересует, можно ли сделать запись более адекватной, если ставить вместо звезды Class или DO - не прокатит, но и чисто DO указать нельзя, ведь тогда вся гребенка туда попадет
__________________
Марк Tween

Старый 07.06.2013, 19:40
Final Hope вне форума Посмотреть профиль Найти все сообщения от Final Hope
  № 2  
Ответить с цитированием
Final Hope
Banned
[+5 04.06.13]
[+1 08.06.13]

Регистрация: May 2013
Сообщений: 52
Код AS3:
var container:Sprite = new Sprite();
var shape:Shape = new Shape();
var sprite:Sprite = new Sprite();
sprite.name = "sprite";
var movieClip:MovieClip = new MovieClip();
 
container.addChild( shape );
container.addChild( sprite );
container.addChild( movieClip );
 
trace( "Есть ли спрайт? " + container.getChildByName("sprite") );
removeByClass( "flash.display::Sprite", container );
trace( "Есть ли спрайт? " + container.getChildByName("sprite") );
 
function removeByClass( className:String, target:DisplayObjectContainer ):void
{
	for (var i:int = 0; i < target.numChildren; i++)
	{
		var child:DisplayObject = target.getChildAt(i);
		trace( "Этот ребенок: " + getQualifiedClassName(child) );
		if ( getQualifiedClassName(child) == className )
		{
			target.removeChild( child );
			i--;
			trace("Удаляю!");
		}
	}
}
Цитата:
Есть ли спрайт? [object Sprite]
Этот ребенок: flash.display::Shape
Этот ребенок: flash.display::Sprite
Удаляю!
Этот ребенок: flash.display::MovieClip
Есть ли спрайт? null

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
private function removeChildrenByClass(clazz:Class):void {
			var i:int = numChildren;
			while (i--) {
				if (getQualifiedClassName(getChildAt(i)) == getQualifiedClassName(clazz)) {
					removeChildAt(i);
				}
			}
		}

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
getQualifiedClassName - забыл про него сенкс
__________________
Марк Tween

Старый 07.06.2013, 23:28
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Код AS3:
if (getQualifiedClassName(getChildAt(i)) == getQualifiedClassName(clazz)) {
Напомните, почему здесь не сработает is?

Старый 08.06.2013, 01:23
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 6  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
где тут типизация?

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

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

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


 


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


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