Difference between revisions of "GIObject.LinkEvent"
1>Admin (Created page with "{{infobox function |name=LinkEvent |object=Объект GI#Атрибуты и функции графических объектов|Графический объект о...") |
m (1 revision imported) |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 28: | Line 28: | ||
* <code>''<Имя локальной функции (STRING)>''</code> - Аргумент задает имя локальной или глобальной функции, которая будет вызываться при наступлении события. | * <code>''<Имя локальной функции (STRING)>''</code> - Аргумент задает имя локальной или глобальной функции, которая будет вызываться при наступлении события. | ||
* <code>''<Глубина поиска (INT)>''</code> - {{Optional}} Задает способ поиска локальной функции. Может принимать следующие значения: | * <code>''<Глубина поиска (INT)>''</code> - {{Optional}} Задает способ поиска локальной функции. Может принимать следующие значения: | ||
| + | ** -1 -- выполнять поиск по последовательности функций из стека вызовов, а не искать, используя подчинение функций на момент компиляции. Этот способ предпочтительнее использовать в компилированных функциях, вызываемых из разных мест модуля или из разных модулей, чтобы получить доступ к реальной среде функций, а не к оной на момент компиляции. | ||
** 0 (по умолчанию) -- выполнять поиск во всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях. | ** 0 (по умолчанию) -- выполнять поиск во всех модулях [[Общее описание языка#Вложенность функций и модулей, уровни вложенности|большего уровня вложенности]] (родительских) и во всех глобальных модулях. | ||
** 1 -- выполнять поиск только внутри текущего модуля. | ** 1 -- выполнять поиск только внутри текущего модуля. | ||
Latest revision as of 11:59, 1 April 2026
| 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)>- (необязательный аргумент) Задает способ поиска локальной функции. Может принимать следующие значения:- -1 -- выполнять поиск по последовательности функций из стека вызовов, а не искать, используя подчинение функций на момент компиляции. Этот способ предпочтительнее использовать в компилированных функциях, вызываемых из разных мест модуля или из разных модулей, чтобы получить доступ к реальной среде функций, а не к оной на момент компиляции.
- 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]:=аОбъектФигуры;