- Сообщений: 10
- Спасибо получено: 4
Как вернуть значение isActive какой-либо сцены?
5 года 1 мес. назад #121814
от mayday_45
mayday_45 создал тему: Как вернуть значение isActive какой-либо сцены?
Я так понял, для того, чтобы получить значение isActive сцены (допустим) Scene_Base, необходимо этот метод вызвать. Но вот проблема, как бы я не пытался его вызывать, его значение остается undefined. Как же правильно этот метод вызвать у любой сцены, чтоб значение было true\false?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
5 года 1 мес. назад - 5 года 1 мес. назад #121815
от Dmy
Dmy ответил в теме Как вернуть значение isActive какой-либо сцены?
[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].)
Чтобы работать со сценой, нужно создать экземпляр этой сцены. (Причём экземпляры [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.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
5 года 1 мес. назад #121819
от mayday_45
mayday_45 ответил в теме Как вернуть значение isActive какой-либо сцены?
спасибо, разобрался!)
Спасибо сказали: Dmy
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.086 секунд
