Развитие игровой вспышки
Текущее время: Пн дек 17, 2018 3:23 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 1:26 am 
Не в сети

Зарегистрирован: Сб дек 19, 2015 12:56 am
Сообщений: 2
Всем привет.
Я не так уж давно начал изучать AS3, но уже немало знаю, что-то даже написал. Проблема вот в чём: не знаю, как правильно реализовать паузу в игре, то есть при нажатии кнопки назад (Keyboard.BACK) меня перекидывает в меню, но не удаляются все объекты, перечисленные с помощью:
Код:
for (var i = 0; i < numChildren; i++) {
   if (getChildAt(i) is ASD) {
      var abc = getChildAt(i);
      removeChildAt(abc);
   }
}

Ошибка выглядит следующим образом:
Код:
RangeError: Error #2006: The supplied index is out of bounds.
   at flash.display::DisplayObjectContainer/getChildAt()
   at Asd_fla::MainTimeline/pause()[Asd_fla.MainTimeline::frame2:72]
   at runtime::ContentPlayer/simulationSendKeyDown()
   at runtime::SimulatedContentPlayer/clientSocketDataHandler()

Прошу помочь, что-то не смог справиться.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 1:31 am 
Не в сети
Аватар пользователя

Зарегистрирован: Вс дек 19, 2010 5:31 pm
Сообщений: 4999
Откуда: Пока не знаю
Цитата:
как правильно реализовать паузу в игре



делаешь систему обновления экрана

function update(){

if ( paused ) return;

for ( var i : int = 0; i < funcs.length; i++){
funcs[i]();
}
}

funcs - это массив. В каждом двигаемом объекте тебе надо создать метод. Например update и там все обрабывать. этот метод добавляешь в func через push


так у тебя будет едина систем обновления, которя будет стопориться при paused = true


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 2:12 am 
Не в сети

Зарегистрирован: Чт янв 22, 2015 7:34 pm
Сообщений: 238
Откуда: Одесса
Mikk писал(а):
Всем привет.
Я не так уж давно начал изучать AS3, но уже немало знаю, что-то даже написал. Проблема вот в чём: не знаю, как правильно реализовать паузу в игре, то есть при нажатии кнопки назад (Keyboard.BACK) меня перекидывает в меню, но не удаляются все объекты, перечисленные с помощью:
Код:
for (var i = 0; i < numChildren; i++) {
   if (getChildAt(i) is ASD) {
      var abc = getChildAt(i);
      removeChildAt(abc);
   }
}

Ошибка выглядит следующим образом:
Код:
RangeError: Error #2006: The supplied index is out of bounds.
   at flash.display::DisplayObjectContainer/getChildAt()
   at Asd_fla::MainTimeline/pause()[Asd_fla.MainTimeline::frame2:72]
   at runtime::ContentPlayer/simulationSendKeyDown()
   at runtime::SimulatedContentPlayer/clientSocketDataHandler()

Прошу помочь, что-то не смог справиться.

Конкретно почему твой метод не работает?Давай разберем.
Смотри, ты присваиваешь i от 0 до numChildren, НО при удалении величина numChildren уменьшается, и тебе выдает такую ошибку.
Что можно сделать? Можно сделать так:
Код:
for (var i = numChildren; i >= 0; i--) {
   if (getChildAt(i) is ASD) {
      removeChildAt(i);
   }
}

При этом всё должно работать.


Последний раз редактировалось damager Сб дек 19, 2015 3:30 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 12:13 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Вс дек 19, 2010 5:31 pm
Сообщений: 4999
Откуда: Пока не знаю
Можно еще проще.

var asds : Vector.<ASD> = new Vector<ASD>();

var myASD :ASD = new ASD();
addChild(myASD);

asds.push(myASD);

и дальше

while ( asds.length > 0 ){
removeChildren( asds.shift() );
}


но это хреновая практика, когда при вызове меню ты что-то убиваешь, чтоб потом создать заново


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 1:33 pm 
Не в сети

Зарегистрирован: Чт янв 22, 2015 7:34 pm
Сообщений: 238
Откуда: Одесса
TheRabbit писал(а):
Можно еще проще.

var asds : Vector.<ASD> = new Vector<ASD>();

var myASD :ASD = new ASD();
addChild(myASD);

asds.push(myASD);

и дальше

while ( asds.length > 0 ){
removeChildren( asds.shift() );
}


но это хреновая практика, когда при вызове меню ты что-то убиваешь, чтоб потом создать заново

Я только помог разобрать в чем ошибка, бесспорно твой метод лучше обновлять при paused = true. У самого аналогичная система стоит.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Сб дек 19, 2015 2:54 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Вс дек 19, 2010 5:31 pm
Сообщений: 4999
Откуда: Пока не знаю
damager писал(а):
Я только помог разобрать в чем ошибка, бесспорно твой метод лучше обновлять при paused = true. У самого аналогичная система стоит.

Не, друже. Ты тоже норм тему ему решил. Просто у меня непонимание зачем он убивает объекты при паузе? Я на это акцент сделал ) А то, что ты пофиксил его ошибку - только тебе плюс, не ему :) Ошибку архитектуры то он допустил )


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Чт дек 24, 2015 7:00 pm 
Не в сети

Зарегистрирован: Сб дек 19, 2015 12:56 am
Сообщений: 2
Спасибо вам обоим. Буду пробовать.
Я там немного неправильно сформулировал вопрос, но получил сразу два нужных ответа :)
И пауза нужна, и выход в меню. Уничтожать объекты как раз нужно было при выходе в меню. Я то всё понять никак не мог, почему у меня в какое-то время получалось убрать только 2 объекта из 4, а тут вон оно что... Дочерних меньше ведь становится :D
Ещё такие вопросы... Почему простая игра подтормаживает временами? Может Flash устарел и стоит изучать что-то новое? И связано ли залипание нажатия (TUOCH_BEGIN) с количеством EventListener'ов? Есть такое:
Код:
addEventListener(TouchEvent.TOUCH_BEGIN, mdown);
addEventListener(TouchEvent.TOUCH_END, mup);
function mdown (e) {
   mouseIsDown = true;
}
function mup (e) {
   mouseIsDown = false;
}

Может можно это как-то заменить?
И-и-и... Как проверить касание сложного объекта со сложным объектом? hitTestObject только прямоугольник вокруг объекта проверяет, а hitTestPooint'ом так не сделать...


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Чт дек 24, 2015 11:20 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Вс дек 19, 2010 5:31 pm
Сообщений: 4999
Откуда: Пока не знаю
Послен таких вопросов я и не знаю что ответить :)


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Пт дек 25, 2015 12:12 am 
Не в сети

Зарегистрирован: Чт янв 22, 2015 7:34 pm
Сообщений: 238
Откуда: Одесса
Mikk писал(а):
Почему простая игра подтормаживает временами? Может Flash устарел и стоит изучать что-то новое?

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


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Реализация выхода в меню/
СообщениеДобавлено: Пт дек 25, 2015 12:43 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Вс дек 19, 2010 5:31 pm
Сообщений: 4999
Откуда: Пока не знаю
без примеров где и что подтормаживает - это пальцем в небо


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB