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

Kerins 08.02.2012 23:48

Как реализовать паузу в игре?
 
Доброго времени суток!= )
Пишу игру стрелялку и столкнулся с трудностью, нужно реализовать паузу в игре типа:
"возврат в игру"
"В главное меню"
И при нажатии на "Возврат в игру",чтоб возвращалась как буд-то нивчём не бывало, т.е. если снаряд летел или враг на тебя бежал,то по возвращению из паузы всё воспроизводилось с того места на каком была нажата кнопка ПАУЗЫ.
Т.е. трудность,как сделать так чтобы всё замараживалось,а потом при возврате восстанавливалось,без полного сброса всех параметров.
Очень буду благодарен за любую помощь!

Inet_PC 08.02.2012 23:52

Если обновление движения пуль и всего остального происходит по событию таймера, есть методы стоп/старт. Если же по Event.ENTER_FRAME то либо заведите переменную (var paused:Boolean), либо отписывайтесь от события а потом обратно подписывайтесь.

Kerins 09.02.2012 00:50

я тоже думал сделать отписывание, однако если много параметров которые должны быть потом воспроизведены после паузы как нивчём не бывало,то много писать,мне показалось это не правильным, ведь должен быть правильнее и красивее вариант.
Я думал записать все переменные в массив а потом их оттуда вытягивать через for и останавливать.

redefy 09.02.2012 01:24

У вас походу как-то сделано все через опу...

У вас все обновление игры происходит где? В игровом цикле? Или в каждом классе понатыкано куча листенеров и они живут сами по себе?

Реализуйте в каждом классе в котором в каждом кадре должно что-то происходить функцию update(), а в главном классе в игровом цикле вызывайте эти функции. Заведите флаг paused, в игровом цикле обновляйте состояние объектов (update()) только если paused==false;

Собственно при паузе ставьте переменную paused в true, обновление объектов прекратится и все замрет...

Kerins 09.02.2012 19:21

Всё в одном классе.У пули свой слушатель Event.ENTER_FRAME, у танка врага свой и есть общий слушатель,в котором все случаи касаний описаны,кроме тех случаев для которых отдельно свои Event.ENTER_FRAME.Походу можно все отдельные кинуть в общий.. и там по условию их и обрабатывать?...

Эта функция update() и будет слушателем события Event.ENTER_FRAME? и в ней отслеживать условие paused==false ?

А когда paused == true; всё будет стартовать с позиций перед нажатием "пауза"?

Monade 2 09.02.2012 19:56

Цитата:

Сообщение от Kerins (Сообщение 1061897)
У пули свой слушатель Event.ENTER_FRAME, у танка врага свой и есть общий слушатель,в котором все случаи касаний описаны

непонятно только, зачем куча слушателей. я в подобных играх всегда делал схему с одним энтер_фрэйм слушателем, который вызывал функции всех объектов в строго заданном порядке по их идентификаторам. и приостановить куда проще, одной строчкой кода

Kerins 09.02.2012 20:12

Я уже исправил) просто все условия скинул в один слушатель, теперь напишу метод который будет всё замараживать и метод который отмараживать обратно.

Tails 09.02.2012 20:37

У меня было так:
класс: BD - грубо говоря (хранит всю инфу о текущем состояний игры)
Класс: Logic - просчитывает изменения, раз в секунду, пол секунды, 1/30 секунды, вообще не просчитывает (нужное подчеркнуть)

fish_r 09.02.2012 21:34

А fps в ноль слабо поставить? )

Kerins 10.02.2012 00:32

fps в ноль?.. так ведь это наверное только для отдельного объекта, а если и пуля летящая и танк приближающийся и бэкграунд движущийся в рандоме?


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

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