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

Nachalo 07.12.2010 18:12

Всплытие клипа на поверхность
 
Всем привет!
Возник вопрос с глубиной клипов в AS3.
В AS2 всё было просто, написал вот так:
Код AS1/AS2:

mx.behaviors.DepthControl.bringToFront(мой_клип);

и "мой_клип" сразу наверху без каких-либо привязок к другим клипам на сцене!

А что делать в AS3?
Допустим создал я клип и прописал его на сцену:

Код AS3:

container.addChild(мой_клип);
addChild(container)

Можно ли что-то написать одной строкой (или не одной) чтобы "мой_клип" всплыл на поверхность вне зависимости и привязки к другим имеющимся на сцене контейнерам и чилдам?

Может кто знае хитрый код? Или всё-таки придется "городить огород" со всякого рода addChildAt getChildIndex и т.д. и т.п.

Hidest 07.12.2010 18:29

опять addChild(). Поставит клип на самый верх. Вообще addChild убирает клип из одного контейнера, если он уже был в нем и помещает в текущий. Если целевой контейер и родительский совпадают - то получается, что переносит его просто наверх.

Кстати, в вашем коде так и так клип в контейнере на самом верху (не важно, что там было), а сам контейнер так же в самом верху того контейнера, куда его положили.

Genzo 07.12.2010 18:38

setChildIndex

Nachalo 07.12.2010 18:53

Цитата:

Сообщение от Hidest (Сообщение 955611)
опять addChild(). Поставит клип на самый верх. Вообще addChild убирает клип из одного контейнера, если он уже был в нем и помещает в текущий. Если целевой контейер и родительский совпадают - то получается, что переносит его просто наверх.

Кстати, в вашем коде так и так клип в контейнере на самом верху (не важно, что там было), а сам контейнер так же в самом верху того контейнера, куда его положили.

Не всё так просто... или я чего-то не понимаю. Объясню подробней. Есть код который написал не я (и не знаю кто). Просто обучаюсь на данном примере. Так вот в этом коде кроме клипа "мой_клип" куча всяких других. И поднять "мой_клип" на поверхность с помощью того, что я пробовал(addChildAt getChildIndex и т.д. и т.п.) не получается. Поэтому и возник вопрос, есть ли способ поднять "мой_клип" по аналогии с AS2(см.выше), вне зависимости и привязки к другим имеющимся на сцене контейнерам и чилдам.

Hidest 07.12.2010 19:03

Приведите пример кода... Немного все сумбурно, особенно относительно того, сколько там у вас контейнеров и какие уровни вложенности... Опять же, если много несвязанных контейнеров навалено, и ваш клип должен быть помещен в какой-то контейнер, находящийся в куче, то надо перемещать сам контейнер уже наверх... Почитайте получше о строении дисплей листа, станет понятнее.

Nachalo 07.12.2010 19:55

Вложений: 1
Цитата:

Сообщение от Hidest (Сообщение 955616)
Приведите пример кода... Немного все сумбурно, особенно относительно того, сколько там у вас контейнеров и какие уровни вложенности... Опять же, если много несвязанных контейнеров навалено, и ваш клип должен быть помещен в какой-то контейнер, находящийся в куче, то надо перемещать сам контейнер уже наверх... Почитайте получше о строении дисплей листа, станет понятнее.

Весь код сюда не уместился, а кусок ничего не даст, поэтому запаковал в архив. Кому не лень смотрите. То, что нужно послать вверх находится на строках с 741 по 749.

Rzer 07.12.2010 20:12

Для Flex (код из Алерта):
Код AS3:

var sm:ISystemManager = ISystemManager(Application.application.systemManager);
if (sm.useSWFBridge())
  parent = Sprite(sm.getSandboxRoot());
else
  parent = Sprite(Application.application);
}
 
PopUpManager.addPopUp(target, parent, modal);


Hidest 07.12.2010 21:19

Мда.... нефиговый такой "баннер" на 1036 строк кода. Частично код после декомпиляции, не хорошо. Один только Banner.as ничего не даст, так как совершенно не хочется разбираться и компилировать в голове, чтобы понять, чего идет не так и чего вы хотите в итоге добиться. Но вообще, по идее, там создается контейнер и добавляется документ классом в дисплейлист, в него добавляется новый спрайт с программной отиросовкой прямоугольника... Он по идее должен быть на самом верху, если после этого ничего больше не добавляется... С какого места - не важно, важен порядок добавления в целом

Nachalo 07.12.2010 21:47

Цитата:

Сообщение от Hidest (Сообщение 955647)
Мда.... нефиговый такой "баннер" на 1036 строк кода. Частично код после декомпиляции, не хорошо. Один только Banner.as ничего не даст, так как совершенно не хочется разбираться и компилировать в голове, чтобы понять, чего идет не так и чего вы хотите в итоге добиться. Но вообще, по идее, там создается контейнер и добавляется документ классом в дисплейлист, в него добавляется новый спрайт с программной отиросовкой прямоугольника... Он по идее должен быть на самом верху, если после этого ничего больше не добавляется... С какого места - не важно, важен порядок добавления в целом

Нет! Код не декомпилирован! А спрайт с программной отрисовкой прямоугольника и есть мой код (или правильнее "мой_клип"),который я вставил и который должен быть наверху. Видимо имена типа _loc_4 и _loc_5 и т.д. сподвинули вас на мысль о декомпиле. Но не в этом дело.
А в том что не хочет этот спрайт быть наверху.
Ладно.Всем спасибо.
Куплю толстую книгу и почитаю.

Hidest 08.12.2010 13:37

Да, именно эти имена и сподвигли... Начасто встретишь, чтобы человек добровольно так писал, хотя, конечно, всякое бывает...


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

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