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

Дополнительные функции

assert(condition : Boolean, message : String)

Данная функция расположена в глобальной области видимости, поэтому не требует импорта перед вызовом. Она предназначена для проверки истинности некоторого условия, и выброса сообщения об ошибке, если условие ложно. В релизной сборке игры, все вызовы данной функции вырезаются при помощи простого webpack плагина расположенного в файле thing-engine/scripts/assert-strip-loader.js. Вызов функции assert должен располагаться в одну строку, иначе при сборке релизного билда assert-strip-loader не сможет правильно удалить вызов.

В Thing-Editor, функция assert очень широко используется для проверки правильности типов передаваемых параметров, правильности использования методов, валидации состояния сцены после выполнения сложных операций редактора. Каждый ассерт имеет свой код ошибки и описание в данной документации. Полный список сообщений об ошибках редактора. Техника ассертов является очень эффективным инструментом тестирования и поддержки больших проектов, старайтесь использовать ассерты при разработке своих игровых компонентов, при этом, желательно, чтобы параметр message подробно описывал причину ошибки и способ ее исправления.

// пример использования
let t = this.findChildrenByName('label');
// проверяем является ли найденный объект Текстовым полем. Если нет, будет выброшена ошибка.
assert(t instanceof Text, "Объект 'label' должен иметь тип Text.");

t.text = "Мой текст";

callByPath(path : String, _this : Object)

Находит javascript функцию по пути, указанному в path, и вызывает ее. При этом path, кроме пути к функции может содержать строковые и числовые параметры, которые будут переданы в найденную функцию при вызове. Метод callByPath используется в Thing-Engine для вызова колбеков, привязанных к событиям компонентов. Подробнее о синтаксисе path и привязке методов к событиям: Callback редактор.

Параметр _this является объектом, который будет взят в качестве корневого объекта, c которого начнется поиск функции, в случае, если path начинается с 'this.'.

// пример использования
import callByPath from "thing-editor/js/engine/utils/call-by-path.js";

callByPath(this.myEditableCallbackPath, this);

getValueByPath(path : String, _this : Object)

Находит javascript переменную по пути, указанному в path, и возвращает ее значение. Если найденное значение является функцией, то эта функция будет вызвана, а результат ее выполнения будет возвращен вместо самой функции. Метод getValueByPath используется в Thing-Engine для привязки компонентов к источникам данных. Подробнее о синтаксисе path : Data-Path редактор.

Если в цепочке значений встретится пустое или не существующее значение, то первое пустое значение либо undefined будет возвращено в качестве результата.

Параметр _this является объектом, который будет взят в качестве корневого объекта, c которого начнется поиск функции, в случае, если path начинается с 'this.'.

// пример использования
import getValueByPath from "thing-editor/js/engine/utils/get-value-by-path.js";

this.text = getValueByPath(this.myEditableDataPath, this);

setValueByPath(path : String, value: *, _this : Object)

Находит javascript переменную по пути, указанному в path, и присваивает ей значение value. Параметр _this является объектом, который будет взят в качестве корневого объекта, c которого начнется поиск функции, в случае, если path начинается с 'this.'.

Основное назначение данного метода - возможность установить значение переменной из ключевого кадра анимации или onClick события кнопки. Подробнее см. Callback редактор

// пример использования
import setValueByPath from "thing-editor/js/engine/utils/get-value-by-path.js";

this.text = setValueByPath(this.myEditableDataPath, this);

stepTo(value : Number, targetValue : Number, step : Number)

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

Приближает некоторое числовое значение value к заданному целевому значению targetValue на заданный шаг step.

import { stepTo } from "thing-editor/js/engine/utils/utils.js";
this.xSpeed = stepTo(this.xSpeed, 0, 1.0); // приблизить this.xSpeed к нулю на единицу.

stepToR(angle : Number, targetAngle : Number, step : Number)

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

Приближает угол angle заданный в радианах, к заданному целевому углу targetAngle в радианах, на заданный шаг step радиан. Отличие этого метода от stepTo в том, что 0 и 2 * PI (полная окружность) считаются одним и тем же углом, и приближение ведется к ближайшему от исходного угла. Метод удобен для поворота игрового объекта в некотором направлении по кратчайшему пути.

import { stepToR } from "thing-editor/js/engine/utils/utils.js";
this.rotation = stepToR(this.rotation, 0, 1.0);

deepClone(val : any)

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

Создает точную копию объекта. Это метод полезен при сохранении объектов в хранилище игровых настроек game.settings;

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

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

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

Clone this wiki locally