Skip to content

components.SceneLinkedRequest

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

компоненты : SceneLinkedRequest

SceneLinkedRequest - компонент, аналог javascript функции fetch, который служит для отправки HTTP запросов. SceneLinkedRequest не доступен для добавления на сцену через редактор сцен, и используется только из javascript вызовом статического метода SceneLinkedRequest.fetch().

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

Методы:

SceneLinkedRequest.fetch(owner : DisplayObject, url : String, resultFormat = "json", options : [Object])

Возвращаемый тип: SceneLinkedPromise

Отправка HTTP запроса. Параметры url и options, полностью совпадают с параметрами стандартного javascript метода fetch, потому как именно он используется компонентом SceneLinkedRequest внутри. Возвращаемый SceneLinkedPromise в качестве результата передает данные, в формате json, text, blob или arrayBuffer, в зависимости от значения параметра resultFormat.

	import SceneLinkedRequest from "thing-editor/js/engine/components/scene-linked-request.js";


	let r = SceneLinkedRequest.fetch(game.currentContainer, 'https://google.com', 'text')
	.then((txt) => {
		console.log(txt);  //use response as you want.
	}).catch((error) => {
		console.log('error');
	}).finally(() => {
		console.log('Promise was resolved, rejected, or deleted from scene before it was finished.');
	});

Фактически, отправка запроса и получение ответа происходят внутри метода update, компонента SceneLinkedRequest. Это автоматически приостанавливает и отменяет запрос в случае, если сцена, к которой запрос привязан, в данный момент не активна.

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

Если SceneLinkedRequest.fetch метод вызван из onShow метода сцены, и в качестве owner указан объект game.currentFader, то созданный запрос будет привязан к фейдеру, и сцена не начнет отображаться до тех пор, пока запрос не будет полностью выполнен. Детальнее этот механизм описан в разделе SceneLinkedPromise.

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

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

SceneLinkedPromise Привязанный ко времени сцены игровой таймаут (Delay)

Компоненты

Редактируемые поля

Clone this wiki locally