GIObject.LinkEvent
LinkEvent (Функции графических объектов) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция ассоциирует локальную функцию по ее имени со стандартным событием графического объекта. Также функции может передаваться один произвольный аргумент при ее вызове. На данный момент доступны следующие стандартные события объектов: OnDraw, OnNewInput, OnChange, OnMove.
Синтаксис
GIObject.LinkEvent(<Имя события (STRING)>,<Имя локальной функции (STRING)>,<Глубина поиска (INT)>=0,<Аргумент функции>)
Аргументы
<Имя события (STRING)>
- Аргумент задает имя события для ассоциации. На данный момент доступны следующие имена событий:- OnDraw: Событие вызывается в момент необходимости нарисовать текущий объект. В нем можно разместить произвольный код для прорисовки и в нужный момент вызвать функцию DrawObject, которая выполняет саму прорисовку объекта. Локальная функция для вызова этого события должна содержать три аргумента -- объект GI, рисуемый графический объект и доп. параметр, заданный в этой функции, пример:
Function Прорисовка(aGI,аОбъект,ДопПараметр)
. - OnNewInput: (планируется к реализации) Событие будет вызываться в момент получения новой информации от внешних устройств ввода (клавиатура, мышь, контроллер), когда объект имеет фокус, либо в момент получения или потери фокуса объектом.
- OnChange: (планируется к реализации) Событие будет вызываться в момент изменения статуса объекта или его определенных атрибутов.
- OnMove: (планируется к реализации) Событие будет вызываться в момент движения, вращения или мастабирования объекта.
- OnDraw: Событие вызывается в момент необходимости нарисовать текущий объект. В нем можно разместить произвольный код для прорисовки и в нужный момент вызвать функцию DrawObject, которая выполняет саму прорисовку объекта. Локальная функция для вызова этого события должна содержать три аргумента -- объект GI, рисуемый графический объект и доп. параметр, заданный в этой функции, пример:
<Имя локальной функции (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]:=аОбъектФигуры;