Можно ли в одну структуру AddListener добавить обработку нажатий для нескольких объектов?

На данный момент каждый элемент интерфейса нуждается в своем слушателе:

// массив элементов
var gRegisters = [
   {item: IR.GetItem("Page 1").GetItem("1")},
   {item: IR.GetItem("Page 1").GetItem("2")},
   {item: IR.GetItem("Page 1").GetItem("3")},
];

function OnPress()
{
	// что-то делаем при нажатии на элемент массива, this. - указатель на item
	IR.Log("Pressed: " + this.Name);
	IR.Log(this.Name + " Value: " + this.Value);
}

// создание слушателей для всех элементов массива
function RegisterButton()
{
   for(var i = 0; i < gRegisters.length; i++)
   {
      var item = gRegisters[i].item;
      IR.AddListener(IR.EVENT_ITEM_PRESS, item, OnPress, item);
   }
}

// функция, выполняющаяся по старту
function Start()
{
   RegisterButton();
}
// начинаем создание слушателей
IR.AddListener(IR.EVENT_START,0, Start);
Что бы получить доступ к данным графического элемента внутри функции OnPress, необходимо обратиться к нему по ссылке this. Например:

function OnPress() {
	var NameOfItem = this.Name;
	IR.Log( NameOfItem );
}

Возможность обращения к данным достигается путем передачи 4-го параметра в метод AddListener:

IR.AddListener(IR.EVENT_ITEM_PRESS, item, OnPress, item);

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

Dit artikel is nuttig voor 4 personen. Is dit artikel nuttig voor u?