Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Как вернуть значение isActive какой-либо сцены?

Как вернуть значение isActive какой-либо сцены? 3 года 1 нед. назад #121814

  • mayday_45
  • mayday_45 аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 4
Я так понял, для того, чтобы получить значение isActive сцены (допустим) Scene_Base, необходимо этот метод вызвать. Но вот проблема, как бы я не пытался его вызывать, его значение остается undefined. Как же правильно этот метод вызвать у любой сцены, чтоб значение было true\false?
Администратор запретил публиковать записи гостям.

Как вернуть значение isActive какой-либо сцены? 3 года 1 нед. назад #121815

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2477
  • Программист RubyРазработчикОраторВетеранПоддержка ФондаДаритель СтимкеяУчительПроект месяца 3 место2 место За 2 место на конкурсе маппинга
Scene_Base — это прототип или класс для сцен, а не сама сцена.

Чтобы работать со сценой, нужно создать экземпляр этой сцены. (Причём экземпляры Scene_Base обычно не создают — вместо них создают экземпляры сцен-потомков. Т.к. Scene_Base сама по себе ничего не делает.) И уже у экземпляра вызывать isActive, если нужно.

Вообще говоря, экземпляр класса создаётся так:
var mySceneBase = new Scene_Base();

Но самому создавать сцены обычно не нужно (если только вы не пишите плагин типа «игра двух человек с разными клавишами за одним компом» или что-то такое, очень редкое и сложное). Ведь так мы создаём «сцену в вакууме», которую ещё нужно подключить к графике, вводу и т.п. Обычно нет смысла делать это вручную.

Обычно мы не создаём сцены сами, а поручаем это дело специальному классу — SceneManager. В отличие от Scene_Base, это статический класс, то есть он один на всю игру и у него есть свои функции (и прочие штуки).

SceneManager создаёт актуальную сцену и хранит её в своём свойстве SceneManager._scene (в теории знак _ перед названием свойства значит, что это свойство не стоит читать из внешнего кода; но в случае со SceneManager._scene этим можно пренебречь — слишком много плагинов, которые так делают).

SceneManager._scene — это экземпляр какой-то сцены, и уже у него можно вызывать какие-то функции сцены: например, SceneManager._scene.isActive()

(А чтобы проверить, какого типа сцена в SceneManager, можно использовать instanceof: проверка SceneManager._scene instanceof Scene_Map будет истинной, если активна сцена Scene_Map.)
Последнее редактирование: 3 года 1 нед. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Демий, Cabbit, VarVarKa, Alx_Yago, mayday_45

Как вернуть значение isActive какой-либо сцены? 3 года 1 нед. назад #121819

  • mayday_45
  • mayday_45 аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 4
спасибо, разобрался!)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy
Модераторы: NeKotZima
Время создания страницы: 0.203 секунд