
Родитель определенного класса
Иногда необходимо узнать, есть ли среди родителей дисплейОбжекта объект определенного класса.
Сделать это можно, например, таким образом:
Оригинал статьи — blog.z-13.ru/2011/02/roditel-opredelennogo-klassa/
Сделать это можно, например, таким образом:
function getParentByClass(obj:DisplayObject, targetClass:Class):Object
{
while (obj.parent)
{
if (obj.parent is targetClass) return obj.parent;
else obj = obj.parent;
}
return null;
}
Оригинал статьи — blog.z-13.ru/2011/02/roditel-opredelennogo-klassa/
- +3
- Z-13
Комментарии (61)
Пожалуйста. ;)
Не понимаю что такой пост делает в общих…
и невероятно— хорошо, для остальных это может быть не так.> объект определенного класса.
А можно пример, когда такое может понадобиться. Я вот никак не могу придумать применение для такой функции.
Есть например массив BaseEnemy, а нужно сделать выборку по SuperEnemy. Если без «is», придется вводить лишнее поле «Тип».
BaseEnemy / SuperEnemy — режет глаз.
функцию для того, чтобы определить, есть ли у моего дисплейОбжекта ребенок определенного класса?
static public function findChildByName(clip: DisplayObjectContainer, name: String): DisplayObject
{
var child: DisplayObject = clip.getChildByName(name);
if (child)
{
return child;
}
for (var i: int = 0; i < clip.numChildren; i++)
{
child = clip.getChildAt(i);
if (child is DisplayObjectContainer)
{
var ch: DisplayObject = findChildByName(child as DisplayObjectContainer, name);
if (ch)
{
return ch;
}
}
}
return null;
}
А статья то где?
Продолжение следует!
и выходит однобокая объективность когда можно только «плюсануть» пост
Кому статья была полезна — оценили тему(или коммент) — но решили не комментить, чтобы не светится.
А вот если задача найти экземпляр, чтобы с ним что-то делать, то потребуется потом этот объект кастить, чтобы использовать. А для этого надо пользоваться сразу as а не is. И проверка и кастинг одновременно.
Т.е. я нахожусь в каком-то компоненте и при клике где-либо на стейдже должно что-то произойти, однако, если кликнули на определенный объект, который среди моих родителей, это надо игнорировать.
-был момент, когда я кликал мышкой по ящику, а в этот момент рука персонажа перегораживала ящик — то таргетился персонаж.
Да в этом случае решила бы растоновка mouseEnabled, но почему-то не спасало(криворукий код). (:
растановка*
как я так не заметил)
во-первых это не «самопеар». это — правильный кросспостинг, с полным текстом оригинального поста. так что тут всё как положено. а если для вас кусок кода в посте очевиден, то можете просто об этом сказать, но бросаться словами о самопиаре в данном случае ни к чему.
по самопиару у нас тут пока только grmaster специализируется со своим порталом fungamedays.com :)во-вторых мне кажется тут ранее проскакивали и более «неоднозначные» посты, реакцей на которые был нулевой рейтинг и отсутствие комментариев. этот пост лично я оцениваю как более полезный, чем те, которые проскакивали. и хоть и понимаю негодование, но всё же удивлен столь бурной реакции. теряем, друзья, нашу фирменную терпимость и дружелюбие. :) сначала вылили ушат воды на автора, а только потом начали выяснять, для чего он использует этот код и предлагать альтернативные варианты. эххх)
Так ведь это только вроде к старичкам, не? :3
А вообще лучше бы были какие-то правила по тематике постов. А то сейчас многие по-видимому соотносят эти блоги с хаброй, неосознано превнося сюда её правила, отсюда и ярая критика.
Что до этого поста… помоему просто достаточно было попросить автора перенести пост в личные, т.к. он мало информативен. Вот и все дела :)