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

Больше
5 года 1 мес. назад #121814 от mayday_45
Я так понял, для того, чтобы получить значение isActive сцены (допустим) Scene_Base, необходимо этот метод вызвать. Но вот проблема, как бы я не пытался его вызывать, его значение остается undefined. Как же правильно этот метод вызвать у любой сцены, чтоб значение было true\false?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
5 года 1 мес. назад - 5 года 1 мес. назад #121815 от Dmy
[tt]Scene_Base[/tt] — это прототип или класс для сцен, а не сама сцена.

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

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

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

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

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

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

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 1 мес. назад #121819 от mayday_45
спасибо, разобрался!)
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.086 секунд
Работает на Kunena форум