![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 5
|
Доброго времени суток!= )
Пишу игру стрелялку и столкнулся с трудностью, нужно реализовать паузу в игре типа: "возврат в игру" "В главное меню" И при нажатии на "Возврат в игру",чтоб возвращалась как буд-то нивчём не бывало, т.е. если снаряд летел или враг на тебя бежал,то по возвращению из паузы всё воспроизводилось с того места на каком была нажата кнопка ПАУЗЫ. Т.е. трудность,как сделать так чтобы всё замараживалось,а потом при возврате восстанавливалось,без полного сброса всех параметров. Очень буду благодарен за любую помощь! |
|
|||||
|
Если обновление движения пуль и всего остального происходит по событию таймера, есть методы стоп/старт. Если же по Event.ENTER_FRAME то либо заведите переменную (var paused:Boolean), либо отписывайтесь от события а потом обратно подписывайтесь.
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 5
|
я тоже думал сделать отписывание, однако если много параметров которые должны быть потом воспроизведены после паузы как нивчём не бывало,то много писать,мне показалось это не правильным, ведь должен быть правильнее и красивее вариант.
Я думал записать все переменные в массив а потом их оттуда вытягивать через for и останавливать. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 58
|
У вас походу как-то сделано все через опу...
У вас все обновление игры происходит где? В игровом цикле? Или в каждом классе понатыкано куча листенеров и они живут сами по себе? Реализуйте в каждом классе в котором в каждом кадре должно что-то происходить функцию update(), а в главном классе в игровом цикле вызывайте эти функции. Заведите флаг paused, в игровом цикле обновляйте состояние объектов (update()) только если paused==false; Собственно при паузе ставьте переменную paused в true, обновление объектов прекратится и все замрет... |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 5
|
Всё в одном классе.У пули свой слушатель Event.ENTER_FRAME, у танка врага свой и есть общий слушатель,в котором все случаи касаний описаны,кроме тех случаев для которых отдельно свои Event.ENTER_FRAME.Походу можно все отдельные кинуть в общий.. и там по условию их и обрабатывать?...
Эта функция update() и будет слушателем события Event.ENTER_FRAME? и в ней отслеживать условие paused==false ? А когда paused == true; всё будет стартовать с позиций перед нажатием "пауза"? |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 38
|
непонятно только, зачем куча слушателей. я в подобных играх всегда делал схему с одним энтер_фрэйм слушателем, который вызывал функции всех объектов в строго заданном порядке по их идентификаторам. и приостановить куда проще, одной строчкой кода
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 5
|
Я уже исправил) просто все условия скинул в один слушатель, теперь напишу метод который будет всё замараживать и метод который отмараживать обратно.
|
|
|||||
|
У меня было так:
класс: BD - грубо говоря (хранит всю инфу о текущем состояний игры) Класс: Logic - просчитывает изменения, раз в секунду, пол секунды, 1/30 секунды, вообще не просчитывает (нужное подчеркнуть)
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 5
|
fps в ноль?.. так ведь это наверное только для отдельного объекта, а если и пуля летящая и танк приближающийся и бэкграунд движущийся в рандоме?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|