LeshaInc 625 Опубликовано: 10 января, 2016 (изменено) 4eyesБиблиотека предоставляющая более удобный интерфейс для работы с мостом из мода OpenPeripherals. ОписаниеДанная библиотека имеет очень удобный ООП интерфейс и много возможностей, в том числе мультипользовательность. Мы можем легко создать свой интерфейс, получать доступ к любому пользователю, слушать события и и работать с клавиатурой. Для примера, код простейшей программы: -- connect libs local eyes = require("4eyes") local class = require("30log") -- create classes local Text = class("Text") do -- class Test function Text:init(surface, x, y, text, color) self.x = x self.y = y self.text = text self.color = color self.drawer = surface.addText(self.x, self.y, self.text, self.color) end function Text:event(bg, us, ev) print(table.unpack(ev and ev or {})) end end -- work with 4eyes local bridge = eyes.Bridge() bridge:getEvent("glasses_attach"):setPostHandler(function (br, ev) print("New user: " .. ev[3]) local us = br:getUser(ev[3]) us:addObject("test", Text(us:getSurface(), 5, 5, "Hello", 0xFFFFFF)) us:renderObjects(br) end) bridge:pull() Как видите, все очень просто. Создаем объект класса Bridge, настраиваем и запускаем метод pull который начнет слушать все события.Сейчас вам может быть не все понятно, например что за PostHandler, и объекты. Об всем этом пойдет далее. ДокументацияКласс BridgeДанный класс является самой главной частью библиотеки, именно в нем происходит слушание событий и добавление/хранение/изменение пользователей. :init() - является конструктором объекта, вызывать явно не нужно, он вызывается сам при создании объекта. При создании создает события по умолчанию (описанные классом Event): glasses_attach - добавляет пользователя в таблицу пользователей glasses_detach - удаляет пользователя из таблицы пользователей glasses_capture - начало сессии с клавиатурой, делает поле captured пользователя равным true glasses_release - конец сессии с клавиатурой, делает поле captured пользователя равным false :pull() - запускает главный цикл программы, слушающий сигналы. :addUser(string: name, string: uuid) - добавляет нового пользователя в таблицу пользователей, принимает имя и uuid пользователя. :getUser(string: name) - возвращает пользователя с указанным ником. :removeUser(string: name) - удаляет пользователя с указанным ником из таблицы пользователей. :addEvent(string: name, Event: event) - добавляет нового слушателя, принимает название события и объект класса Event. :getEvent(string: name) - возвращает слушателя с указанным именем. :removeEvent(string: name) - удаляет слушателя с указанным именем. :eachUser(function: func(Bridge: bridge, User: user)) - выполняет функцию для каждого пользователя. Пример: bridge:eachUser(function (br, us) print(us.name) end) --[[ пользователи: Маша, Петя, Катя stdout: Маша Петя Катя --]] Класс EventДанный класс является обработчиком события. Очень прост. :init(function: handler) - является конструктором объекта, вызывать явно не нужно, вызывается сам при создании объекта. Принимает обработчик события, в качестве функции. :setHandler(function: handler) - устанавливает обработчик. :setPostHandler(function: posthandler) - устанавливает пост-обрабочик события. Этот пост-обрабочик будет вызыватся каждый раз после вызовы обработчика. :handle(...) - обрабатывает событие, сначала обработчиком, потом пост-обработчиком. Принимает любые данные, которые будут переданы обработчику и пост-обработчику. Класс User Класс пользователя. Хранит в себе все объекты пользователя, такие как тексты и геометрические фигуры. ...дописать... Скачать Для того чтобы поставить библиотеку, скачайте два файла: 30log.lua и 4eyes.lua и разместите их в папке /lib либо /usr/lib Изменено 10 января, 2016 пользователем LeshaInc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 11 января, 2016 (изменено) Зачем выставлять библиотеку которая не работает? Изменено 11 января, 2016 пользователем NEO 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 11 января, 2016 Зачем выставлять библиотеку которая не работает? Все она работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах