Форум 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=175348)

il phoenix 15.02.2012 13:00

Как найти всех child определенного класса?
 
добрый день, почему то на новом проекте перестал работать метод которым раньше пользовался
Код AS1/AS2:

public function getChildrenByClass(class_name:Class):Vector.<DisplayObject>
                {
                        var child:DisplayObject;
                        var children:Vector.<DisplayObject> = new Vector.<DisplayObject>();
                        for (var i:int = 0; i < numChildren; i++)
                        {
                                child = getChildAt(i);
                                if (child is class_name)
                                        children.push(child);
                        }
                        return children;
                }

может как-то еще в as3 можно сравниать классы?

Genzo 15.02.2012 13:03

Код AS3:

if (child.constructor == class_name)
                                        children.push(child);

Еще можно typeof, но он со строкой сравнивается

КорДум 15.02.2012 13:03

Код AS3:

for each (var obj:DisplayObject in container) {
        if (obj is ClassName)
                trace(obj);
}


il phoenix 15.02.2012 13:26

Genzo, child.constructor == class_name, не помогло =( а typeof же не работает нифига, для всех "object" возвращает, может я им пользоваться не умею? вызываю так typeof(child)

КорДум, ну да, я так и делаю

Genzo 15.02.2012 13:28

У вас эти классы вообще есть? Может вы используете везде MovieClip?

КорДум 15.02.2012 13:30

Есть еще getQualifiedClassName()

il phoenix 15.02.2012 13:33

ага, есть, вот так вот выглядит:
Код AS1/AS2:

public function loadingShow():void
                {
                        addChild( new LoadingControl());                       
                }
 
                public function loadingHide():void
                {
                        removeChildrenByClass(LoadingControl);
                }

loadingShow - работает
loadingHide - нет

Inet_PC 15.02.2012 13:35

так может ошибка в removeChildrenByClass?

il phoenix 15.02.2012 13:37

Цитата:

Сообщение от КорДум (Сообщение 1063021)
Есть еще getQualifiedClassName()

о! спасибо! осталось понять как их class_name:Class вынуть полное название класса)

Добавлено через 2 минуты
Цитата:

Сообщение от Inet_PC (Сообщение 1063026)
так может ошибка в removeChildrenByClass?

тьфу блин.. вот я балбес, в removeChildrenByClass(class_name:Class) вместо
Код AS1/AS2:

var children:Vector.<DisplayObject> = getChildrenByClass(class_name);

написал
Код AS1/AS2:

var children:Vector.<DisplayObject> = getChildrenByClass(Class);

всем спасибо, извиняюсь за беспокойство


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

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