PDA

Просмотр полной версии : Выход из игры и возвращение в меню


Rozalinda
20.05.2013, 11:26
Здравствуйте еще раз!
В прямом смысле слова не могу выбраться из игры.

Есть класс App, в котором содержится переменная game:Game. В игре располагаются игровые фишки, при нажатии на которые и происходят все действия и проверки, то есть все это происходит в классе Game. Когда же игра заканчивается, мне нужно удалить те элементы, которые содержатся на экране и загрузить обратно меню, чтобы можно было снова играть. А это уже находится в классе App. Оба они находятся в одном пакете, но в классе Game я не могу сослаться на методы класса App, чтобы, собственно, выбраться из игры и вернуться наверх, откуда можно и экземпляр Game удалить и дальше работать.
Ввиду отсутствия опыта, приходится прибегать к сторонней помощи. Помогите разобраться, что мне делать в такой ситуации.

Wolsh
20.05.2013, 11:30
Посылать из Game событие "GameOver", на которое должен быть подписан Арр, который и удалит Game и выведет меню.

Rozalinda
20.05.2013, 11:32
Эм... спасибо )
А можно это как-то более программно пояснить, пожалуйста? (проект первый...)

Wolsh
20.05.2013, 14:16
В Game.as :
//...
public static const GAME_OVER:String = "GameOver";
//... какие-то условия выполнились и надо "выйти наверх":
super.dispatchEvent(new Event(GAME_OVER));
В App.as :
private var _game:Game = new Game();
//...
_game.addEventListener(Game.GAME_OVER, onGameOver);
//...
private function onGameOver(event:Event):void
{
super.removeChild(_game);
_game = null;
showMenu();
}

Rozalinda
20.05.2013, 15:57
Здорово, спасибо большое!

MoHaX
20.05.2013, 17:39
Есть еще простой способ. Можно использовать callback, в твоем случае это метод из класса App.
Во время создания класса Game передай ему ссылку на метод gameOver, сохрани ее в переменную в классе Game, и вызови когда удобно.

Sync
20.05.2013, 17:47
ненадо учить этому. делать гадости люди и сами научацца)

Rozalinda
20.05.2013, 17:47
а почему гадости? )

Sync
20.05.2013, 17:55
потому что человек читающий код с большим числом калбеков по опасности приближается к ошпарившемуся сатане

Rozalinda
20.05.2013, 17:57
м, я просто еще не знакома с понятием калбеков )

MoHaX
20.05.2013, 19:04
потому что человек читающий код с большим числом калбеков по опасности приближается к ошпарившемуся сатане

Если с архитектурой все хорошо, то калбеки вполне себе решение. И работает такой код побыстрее..

Добавлено через 3 минуты
м, я просто еще не знакома с понятием калбеков )

Детка, все просто, передаешь имя функции как параметр, сохраняешь ее, и вызываешь когда удобно:)
Сейчас папочка научит тебя грязным хакам! А про статические переменные ты слыхала?! это же вообще чума:)))

Rozalinda
20.05.2013, 19:11
MoHaX, я вам не детка

in4core
20.05.2013, 19:30
калбеков
Все верно сказано

Sync
20.05.2013, 22:40
Если с архитектурой все хорошо, то калбеки вполне себе решение. И работает такой код побыстрее..

С архитектурой всё плохо: вы УЖЕ используете кАлбек :) там, где он не нужен.
Осталось рассказать только про a?b:c и назвать всех неучами)

Все верно сказано
:drinks:

Котяра
21.05.2013, 00:35
Слушатели - это тоже коллбэки, просто добавляются неявно и их может быть несколько. Но есть один нюанс. Они более менее типизированы и всем знакомы.

MoHaX
21.05.2013, 04:22
Да, плохое чувство юмора, вот что меня губит:) в остальном я абсолютно прав, смейся толпа!