Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Постоянный обмен глубиной (http://www.flasher.ru/forum/showthread.php?t=164821)

TEI 18.08.2011 22:03

Постоянный обмен глубиной
 
Столкнулся с проблемой. самому смешно, никак не могу найти в help adobe...

Мне нужно, чтобы функция постоянно проверяла есть ли какой-нибудь объект выше по глубине чем объектА и если есть то ставил объектА наверх. )

В общем манипуляции с depth.

Не могу понять как получить глубину объекта... и какой самый оптимальный способ это осуществить?

Mideon 18.08.2011 22:07

http://help.adobe.com/en_US/FlashPla...getChildIndex()

dimarik 18.08.2011 22:08

"Глубина, глубина, я не твой!" С. Лукьянинко.

Нет такой функции, кроме Event.EXIT_FRAME

Mideon 18.08.2011 22:12

Писать самому используя то что я указал выше swapChildren и numChildren

dimarik 18.08.2011 22:20

Не. Писать ему её самому, как я указал выше, используя то, что вы сказали выше ).

TEI 18.08.2011 22:23

Да, swap я нашел в справке и уже использовал в другом случае. Но пока не приходит в голову как прикрутить его сюда. Мои дети от разные потомков.

dimarik 18.08.2011 22:36

В общем случае

Код AS3:

const child:DisplayObject = {ваш визуальный объект};
child.addEventListener(Event.EXIT_FRAME, this.handler_exitFrame, false, int.MAX_VALUE);
 
function handler_exitFrame(event:Event):void {
    const d:DisplayObject = event.target as DisplayObject;
    d.parent.setChildIndex(this, d.parent.numChildren - 1);
}

Все это завернуть на проверку ADDED_TO_STAGE, чтобы зря не работал d.parent. Отписываться не забывать при REMOVED_FROM_STAGE.

TEI 19.08.2011 14:12

Я нашел более простой вариант моей задачи.

Код AS3:

if (getChildByName("tower") is MovieClip) {
swapChildren(getChildByName("tower"),getChildByName("enemy"+perVrag))
}


Когда вызывается новый объект. Я проверяю есть ли табличка, которая должна быть поверх. И если она есть то меняю их местами

КорДум 19.08.2011 14:14

Код AS3:

if (getChildByName("tower") is MovieClip) {

is MovieClip не нужен. Если только у Вас под этим именем не может быть TextField или еще чего.

derhab 19.08.2011 14:17

Код AS3:

var child:DisplayObject = getChildByName("tower");
if (child) {
  swapChildren(child, getChildByName("enemy"+perVrag));
}



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

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