-
Notifications
You must be signed in to change notification settings - Fork 41
components.SceneLinkedRequest
компоненты : 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)