Назначение функций или действий

Функции или действия могут быть назначены сущностям в WED, или назначенны на клавишу, мышь или другие события (через скрипт). Общий синтаксис назначения функции некоторому событию:
event = function;
Обратите внимание: общая ошибка новичка состоит в том, чтобы писать вместо этого event = function(); Это допустимый синтаксис (не вызывает синтаксической ошибки при сборке), но означает нечто совершенно другое и неизбежно ведет к сбою движка. Вместо назначения некоторой функции случаю, эта инструкция вызывает функцию и назначает возвращенное число. Следующие события доступны для назначения функций:

on_close
Функция выполняется когда был клик на иконке закрытия в окном приложения. Пример:
function quit() { exit(); }
on_close = quit;

on_mouse_left, on_mouse_middle, on_mouse_right
Функция ввыполняется когда нажата левая, средняя, или правая кнопка мыши. В зависимости от нажатой кнопки как параметр функции передается число 280 (левая), 282 (средняя) и 281 (правая).

on_click
Функция выполняется при левом клике указателем мыши где-нибудь в пределах вида(view), без попадания на любой объект или панель.

on_mouse_stop
Функция выполняется когда указатель мыши активен и мышь была неподвижна *** секунд. Переменная mouse_calm используется для указания максимального расстояние в пикселях, при перемещении на которое считается что мышь неподвижна ( по умолчание 3). Переменная mouse_moving определяет состояние: мышь неподвижна (0) или перемещается (1).

on_joy1
Функция выполняется когда нажата первая кнопка джойстика. Аналогично выполняются функции On_joy2.. On_joy10 и on_joy2_1… On_joy2_10 при нажатии других кнопок и второго джойстикаться. В зависимости от номера кнопки, числа 256 (кнопка 1, джойстик 1)… 275 (кнопка 10, джойстик 2) передаются как параметр функции.

on_anykey
Функция выполняется при нажатии любой клавиша клавиатуры. Скан-код клавиши передается как параметр функции (скан-код — уникальное число в диапазоне 0.. 127 назначенное на каждую клавишу).

on_f1
Функция выполняется при нажатии клавиша [F1]. Скан-код передается как параметр функции. Аналогично работают следующие клавиши инструкции:
on_f2…on_f12, on_esc, on_tab, on_ctrl, on_alt, on_shiftl, on_shiftr, on_space, on_bksp, on_cuu, on_cud, on_cur, on_cul, on_pgup, on_pgdn, on_home, on_end, on_ins, on_del, on_pause, on_car (full stop), on_cal (comma), on_enter, on_0…on_9, on_a…on_z.
Имена функций отражают физическое назначение клавиш на клавиатуре, а не символ, печатаемый при нажатии на эту клавишу. Имена, данные здесь соответствуют Немецкой клавиатуре. На АМЕРИКАНСКОЙ клавиатуре, поменяны местами клавиши Y и Z. Следующие специальные клавиши имеют альтернативные имена для АМЕРИКАНСКОЙ и Немецкой клавиатуры:
Key US German (alternative name)
on_grave [~`] [°^]
on_minusc [_-] [?] (on_sz)
on_equals [+=] [`’] (on_apo)
on_brackl [{[] [Uu] (on_ue)
on_brackr [}]] [*+] (on_plus)
on_bksl [|] —
on_semic [:;] [Oo] (on_oe)
on_apos [«‘] [Aa] (on_ae)
on_slash [?/] [_-] (on_minus)

on_server
Функция выполняется когда сервер получает сообщение от клиента. Переменная event_type содержит тип сообщения. Когда сообщение содержит строку, указатель на полученную строку передается как параметр функции. Есть 4 типа событий сервера:
Event_join: клиент присоединился к сессии. Имя клиента передано.
Event_leave: клиент оставил сессию. Имя клиента передано.
Event_string: клиент послал строку серверу. Указатель строки передан.
Event_var: клиент послал переменную или массив серверу.
Пример:
function server_event(str)
{
if (event_type == event_join)
{
str_cpy(temp_str,str);
str_cat(temp_str,» has joined»);
scroll_message(temp_str);
return;
}
if (event_type == event_leave)
{
str_cpy(temp_str,str);
str_cat(temp_str,» has left»);
scroll_message(temp_str);
return;
}
if ((event_type == event_string) && (str == message_syn))
// message_syn was set before to a certain string that is used for exchanging messages
{
// server received a message -> send it to all clients
send_string(message_syn);
return;
}
}
on_server = server_event;

on_client
Данная функция выполняется когда клиент получает сообщение от сервера. Переменная event_type содержит тип сообщения. Когда сообщение содержит строку, указатель на полученную строку передается как параметр функции. Есть 2 типа событий клиента:
Event_string: сервер послал строку всем клиентам. Указатель строки передан.
Event_var: сервер послал переменную или массив.
Пример:
// client received message -> display it
function client_event(str)
{
if ((event_type == event_string) && (str == message_syn))
// message_syn was set before to a certain string that is used for exchanging messages
{
scroll_message(message_syn);
str_cpy(message_syn,empty_str);
return;
}
}
on_client = client_event;
Все событийные функции клавиатуры, мыши или другие — могут быть изменены в любое время другими функциями (On_f1 = функция;), так что та же самая клавиша или кнопка могут вызывать различные функции в разное время.

Добавить комментарий