Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Можно ли переместить клип от одного родителя к другому? (http://www.flasher.ru/forum/showthread.php?t=172954)

Alex626 20.12.2011 20:38

Можно ли переместить клип от одного родителя к другому?
 
У меня возникла необходимость в определённый момент вырвать клип-наследник из клипа-родителя на более высокий уровень. Не знаю, можно ли так сделать через скрипт, но в редакторе Flash эта операия была бы эквивалентна действию "Break Apart".

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

mooncar 20.12.2011 21:18

Нет, так сделать нельзя.
Доставайте (приаттачивайте) мувики из библиотеки.

Alex626 20.12.2011 21:32

То есть каждый раз работать с новым клипом?

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

mooncar 20.12.2011 21:41

Можно написать собственный скроллинг.

PS. Вы, случайно, не что-то типа инвентаря делаете?

Alex626 20.12.2011 22:01

Да, инвентарь и делаю.

mooncar 21.12.2011 16:13

Возможно такое решение:

Итемы находятся в инвентаре как обычно и скроллируются.

При нажатии (onPress), итем в инвентаре делается невидимым (_visible = false), а в специальный мувике поверх сцены (предназначенном для итемов перемещения по сцене) приаттачивается из библиотеки тот же итем в тех же координатах, визуально подменяя итем инвентаря.

Для точности позиционирования, чтобы не было видно подмены, можно использовать методы localToGlobal (определяем текущее положение итема инвентаря относительно _root), lobalToLocal (переводим эти координаты в нужные координаты контейнера, где будут происходить перемещения итемов на сцене).

Для перемещения итема по сцене использовать onMouseMove.
Для укладки итема в инвентарь то же делать в обратной последовательности.

Alex626 21.12.2011 16:47

Как-то слишком негуманно. Может лучше заставить определённые объекты не перемещаться вместе со скролом?

mooncar 21.12.2011 16:59

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

Alex626 21.12.2011 17:54

Удобнее всего, когда информация о предметах хранится в самих итемах. Я реализовал перетаскивание и масштабирование. А теперь придётся работать по другому принципу?

mooncar 21.12.2011 18:02

Хранить инфу в самих итемах - это не дело.
Конечно, база данных для итемов должна быть независима от самих итемов на сцене. Так далеко не уедешь.
Используйте массив.ы


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

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