GIObject.LinkEvent

From SunFlurry wiki
Jump to: navigation, search
  LinkEvent (Функции графических объектов)
Объект:Графический объект объекта GI
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Неверные аргументы.
Визуальность:Да

Функция ассоциирует локальную функцию по ее имени со стандартным событием графического объекта. Также функции может передаваться один произвольный аргумент при ее вызове. На данный момент доступны следующие стандартные события объектов: OnDraw, OnNewInput, OnChange, OnMove.

Синтаксис

GIObject.LinkEvent(<Имя события (STRING)>,<Имя локальной функции (STRING)>,<Глубина поиска (INT)>=0,<Аргумент функции>)

Аргументы

  • <Имя события (STRING)> - Аргумент задает имя события для ассоциации. На данный момент доступны следующие имена событий:
    • OnDraw: Событие вызывается в момент необходимости нарисовать текущий объект. В нем можно разместить произвольный код для прорисовки и в нужный момент вызвать функцию DrawObject, которая выполняет саму прорисовку объекта. Локальная функция для вызова этого события должна содержать три аргумента -- объект GI, рисуемый графический объект и доп. параметр, заданный в этой функции, пример: Function Прорисовка(aGI,аОбъект,ДопПараметр).
    • OnNewInput: (планируется к реализации) Событие будет вызываться в момент получения новой информации от внешних устройств ввода (клавиатура, мышь, контроллер), когда объект имеет фокус, либо в момент получения или потери фокуса объектом.
    • OnChange: (планируется к реализации) Событие будет вызываться в момент изменения статуса объекта или его определенных атрибутов.
    • OnMove: (планируется к реализации) Событие будет вызываться в момент движения, вращения или мастабирования объекта.
  • <Имя локальной функции (STRING)> - Аргумент задает имя локальной или глобальной функции, которая будет вызываться при наступлении события.
  • <Глубина поиска (INT)> - (необязательный аргумент) Задает способ поиска локальной функции. Может принимать следующие значения:
    • 0 (по умолчанию) -- выполнять поиск во всех модулях большего уровня вложенности (родительских) и во всех глобальных модулях.
    • 1 -- выполнять поиск только внутри текущего модуля.
    • 2 -- выполнять поиск только внутри родительского модуля.
    • 3..x -- выполнять поиск только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).
  • <Аргумент функции> - (необязательный аргумент) Содержит произвольное значение, которое будет передано локальной функции третим аргументом при ее вызове.

Примеры

//Используется фрагмент из обработки tetris.sfo

  Function OnDrawObject(aGI,aObj)
    aGI.ShaderProgramSetVariable(лкПрограммы[2],"u_offset",,0,лкТекущаяФигура[5]*лкШиринаКвадрата);  
    aObj.DrawObject();
    aGI.ShaderProgramSetVariable(лкПрограммы[2],"u_offset",,0,0);  
  EndFunction


...
аМодель:=GIModel.New();
аМодель.SimpleModel(Buffer.Create());
аОбъектФигуры:=aGI.AddObject();
аОбъектФигуры.Model(аМодель);
аОбъектФигуры.LinkEvent("ONDRAW","OnDrawObject",1);
лкОбъекты[2]:=аОбъектФигуры;