Пользовательские методы и объекты

 

Методы

Вы уже знаете, что WME предоставляет в Ваше распоряжение предопределённые объекты (персонажи, сцены, объекты сцен и т. д.), которые имеют свой набор методов. Помимо этого Вы можете писать собственные методы для этих объектов. Объявление метода подобно определению функции, только вместо ключевого слова function используется слово method. Вы можете вызывать их тем же способом, что и встроенные в движок стандартные методы.

Всё, что Вам нужно сделать, это:

  1. создать файл сценария
  2. написать в нём один или более методов
  3. присоединить сценарий к объекту (например, персонажу)

Пример:

method MyTestMethod(parameter)
{
  Game.Msg("Это мой тестовый метод. Переданный ему параметр - " + parameter);
}
 

После того, как Вы присоединили сценарий к объекту, (либо в файле определения объекта, либо с помощью программы SceneEdit, либо с помощью метода AttachScript), Вы можете вызвать свой метод:

SomeObject.MyTestMethod("значение параметра");

Если Вам нужно сослаться на объект внутри метода, принадлежащего ему, используйте ключевое слово this. Эта псевдо-переменная содержит ссылку на объект, к которому прикреплён текущий файл сценария.

Следует отметить, что WME не может выявить орфографических ошибок в имени метода на стадии компиляции, они будут найдены во время выполнения игры и послужат причиной ошибки. Это единственный недостаток методов по сравнению с обычными функциями.

Также Вы можете перегрузить встроенные методы (такие, как Talk или GoTo), просто объявив методы с таким же именем. Тем не менее строго рекомендуется осуществлять вызовы оригинальных методов внутри Ваших реализаций. В следующем примере будет перегружен встроенный метод GoTo. Он выводит на экран точку назначения, а затем вызывает оригинальный метод, чтобы заставить персонажа идти в указанную точку.

method GoTo(X, Y)
{
  Game.Msg("Персонаж направляется в точку с координатами " + X + ", " + Y);
  this.GoTo(X, Y);
}

 

Объекты

Выше описывалось как с помощью пользовательских методов расширить функциональность встроенных объектов WME. Помимо этого Вы можете создавать собственные объекты. Для это сначала Вам нужно написать файл сценария, содержащий все методы Вашего нового объекта. Когда Вам понадобится создать экземпляр этого объекта, используйте следующий синтаксис:

// создание нового объекта   
        var MyObject = new Object("имя_файла_сценария");

        // теперь мы можем вызывать его методы   
        MyObject.MyMethod();

Вы можете использовать собственные объекты для широкого круга задач. Например, Вы можете создавать «библиотеки кода», т. е. объекты, которые предоставляют набор функций, многократно использующихся в проекте. Это является единственным способом создать глобальные функции, которые можно использовать во всех сценариях WME.