DroidScript

События

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript
инструменты для мобильной разработки

События

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript  
Дата изменения 03.12.2016

Работа с событиями в DroidScript происходит легко, что будет рассмотрено на примере компоновщика.

Компоновщики могут реагировать на действия пользователей. Для этого они имеют следующие методы:

В качестве единственного параметра в них задаётся функция обратного вызова (ФОВ), в которую, в зависимости от источника и вида события, могут передаваться или не передаваться параметры.

До версии DroidScript 1.42 в качестве функции обратного вызова callback в DroidScript для любого метода-обработчика можно было указать только название глобальной функции или имя глобальной функции в кавычках в качестве параметра метода eval:

SetOnTouch( myFunction );

или

SetOnTouch( eval ('myFunction') );

Любые другие способы задания параметра callback, включая обращения к анонимным функциям, функциям-выражениям, функциям с параметрами и т.п. приводили к ошибке времени выполнения. Это создавало трудности, так как была невозможна явная передача параметров обработчику и приходилось создавать большое количество глобальных функций для каждого элемента управления.

Начиная с версии 1.42 в качестве обработчика событий можно указывать также анонимную функцию:

myObject.SetOnTouch( function(){

app.ShowPopup( 'Произошло касание объекта' );

});

и функциональное выражение:

var myFunc = function(){ alert(); }

myObject.SetOnTouch( myFunc );

});

Если объект не имеет методов SetOnTouchDown, SetOnTouchMove и SetOnTouchUp, то при вызове ФОВ в метода SetOnTouch аргументы ей не передаются:

btn.SetOnTouch( AS );

function AS( t ){
alert( t ); // undefined
}

Если объект имеет методы SetOnTouchDown, SetOnTouchMove, SetOnTouchUp, то в случае использования вместе с ними метода SetOnTouch последний будет перехватывать события down, move, up, получая от системы объект события со следующими полями:

Скопируйте пример и посмотрите работу событий.

Пример 1. Работа с событиями.

В этом примере определены обработчики SetOnTouchDown, SetOnTouchMove, SetOnTouchUp, но их вызов не производится из-за перехвата всех событий обработчиком SetOnTouch.

Для группировки реакции на события от многих объектов можно использовать функцию роутера событий, как это показано в примере ниже.

Пример 2. Функция-роутер событий.

Выполнить

В этом примере каждому объекту добавлено по два свойства - параметр и действие, благодаря которым в роутере можно определить источник события и вызвать для него требуемон действие.

При использовании функции-роутера событий необходимо проверять входные параметры. Без данной проверки возможны ошибки, так как в одних случаях аргумент будет объектом, в других строкой или числом, а в третьих аргумента вообще не будет.

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

DroidScript