Skip to content

components.Delay

vasili.kostin edited this page Aug 27, 2021 · 13 revisions

Delay - компонент, аналог javascript функции [setTimeouthttps://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout, который служит для однократного вызова функции с заданной задержкой. Delay не доступен для добавления на сцену через редактор сцен, и используется только из javascript вызовом статического метода Delay.delay().

Почему в игровой логике следует использовать метод Delay.delay() вместо стандартного для javascript setTimeout()? Счетчик созданный через Delay.delay() автоматически привязывается к текущей сцене, и если игрок закроет сцену и выйдет в главное меню игры, или на экране появится модальный диалог, счетчик будет приостановлен до возвращения игрока в сцену, в которой счетчик создан. Если сцена или объект, к которому счетчик привязан уничтожается - то счетчик будет отменен автоматически. Это позволяет избежать большого количества ошибок при разработке игры. В дополнение, в игровом редакторе, игра может быть поставлена на паузу в целях отладки. Все созданные на данный момент счетчики отображаются в дереве сцены, и текущее время каждого счетчика может быть отредактировано в редакторе свойств.

Для игровых событий, наступающих с определенной задержкой не обязательно использовать javascript и Delay. Можно воспользоваться компонентом MovieClip и расположить на его таймлайне ключевые кадры с вызовом нужных методов в нужное время.

Редактируемые свойства:

delay

Тип: Number

В данном поле хранится задержка в кадрах (60 кадров равно одной секунде) оставшаяся до срабатывания счетчика.


Методы:

Delay.delay (callback : Function, delayFrames : Number, container : DisplayObject = game.currentContainer)

Возвращаемый тип: [Delay]

Создает привязанный к сцене счетчик, по истечению которого будет вызвана функция, переданная в параметре callback.

Параметр delayFrames - определяет длительность задержки в кадрах (60 кадров равно одной секунде) по истечению которой сработает счетчик.

Параметром container можно задать экранный объект, к которому будет привязан созданный счетчик в качестве дочернего объекта. Если оставить этот параметр пустым, то созданный счетчик будет привязан к game.currentContainer.

	import Delay from "thing-editor/js/engine/components/delay";

	function callback() {
		console.log("Half of second has past.")
	}

	let d = Delay.delay(callback, 30); //30 frames (half of second) delay

	d.remove(); // to cancel delay.

remove()

Данный метод унаследован, и может быть использован для досрочной отмены задержки и удаления Delay объекта со сцены.


skip()

Немедленное выполнение обработчика callback и удаление Delay объекта со сцены.

<- Предыдущая страница Следующая страница ->

Связанные темы:

SceneLinkedPromise

HTTP запросы SceneLinkedRequest

Общая информация для Javascript разработчика

Clone this wiki locally