![]() |
Эффект перехода между экранами
Подскажите, как это грамотно реализовать?
Для примера я создал две сцены Menu1 и Menu2 Важный момент. В первой сцене на экран добавляется только один мувиклип. А во второй - два. Тоесть количество элементов на сцене может быть разным. Также в нижеприведённом коде не реализовано удаление с экрана ненужных сцен. Код всего этого такой: Код AS3:
С 1 по 15 кадр шторка полностью закрывает экран. С 16 по 30 шторка открывается. Тоесть я представляю процесс так: Когда нажимается кнопка на каком либо из экранов. 1. На сцену добавляется клип Curtain. 2. Происходит анимация мувиклипа Curtain с 1 по 15 кадр. 3. В момент когда шторка закрыта, надо удалить все элементы присутствующие на экране. В нашем примере это либо menu1 и greenbox1 либо menu2 4. Затем надо добавить нужные нам элементы новой сцены. К примеру если мы переходим из menu2 в menu1, то нам надо добавить мувиклипы menu1 и greenbox1 5. После того как новая сцена сформирована - можно открыть шторки, проиграв анимацию с 16 по 30 кадры. 6. После того как шторка открылась, мувиклип Curtain можно удалить со сцены. Может быть это делается как-то попроще/иначе? Или всё правильно? |
Менеджер экранов управляет шторками. В момент закрытия шторки он говорит прошлому экрану - "скройся", новому "покажись" и создает/убивает их, если надо. Может их на сцену добавлять где надо, если они display object'ы (1 экран - 1 дисплей обжект, внутри него может сидеть то, что ему надо). Как именно они будут появляться/исчезать - их интимные проблемы.
|
Нормально, пойдет.
Реализация "удаления сцен" может выглядеть так: Код AS3:
Код AS3:
|
fish_r: Спасибо! Насчёт реализации удаления понятно. Действительно хорошее для меня решение.
А вот вторую часть я не очень понял. Почему добавление слушателя лучше, чем у меня просто вызов M1() ? |
Во-первых потому, что видимо приведенный вами пример вырван из какого-то контекста, где так и было (иначе почему M1(event:Event=null)?).
Во-вторых так правильнее начинать программу, потому, что в ходе инициализации объектов (мувиков и пр.) программы часто необходимо свойство stage документ-класса, или других объектов находящихся на сцене, чтобы указать позиционирование и пр. В случае если виз. объект начал работу до добавления на сцену возможны ошибки исполнения, т.к. stage может оказаться равным "null". Ваша программа, также, в какой-то момент может перестать быть самостоятельной и стать частью, элементом другой, более крупной программы, т.е. виз.объектом, поэтому вобщем хорошей практикой считается начинать инициализацию виз.объектов после добавления на сцену, впрочем инициализация не всегда начинается после добавления на сцену, однако момент добавления всё равно учитывается. |
| Часовой пояс GMT +4, время: 07:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.