Перейти к содержимому
  • 0
oOlDeMoNlOo

Помощь по event

Вопрос

Пожалуйста обьясните как использовать event, желательно с простенькими примерами.

Изменено пользователем oOlDeMoNlOo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

local event = require("event")

 

function keydown(eventname, keyboardaddress, char, code, playername )

     print(playername.." нажал клавишу "..code)

end

 

event.listen("key_down", keydown)

Изменено пользователем Alex
Форматирование убрал, а то нечитаемо было =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local event = require("event")

 

while true do

     e, receive, sender, channel, dist, message = event.pull("modem_message")

     print(message)

end

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local event = require("event")

 

while true do

     e, receive, sender, dist, chan, message = event.pull("modem_message")

     print(message)

end

а можете, пожалуйста, расписать 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а можете, пожалуйста, расписать 

Описание библиотеки event.

http://minecraft-ru.gamepedia.com/OpenComputers/Event_API

Список событии.

http://minecraft-ru.gamepedia.com/OpenComputers/%D0%A1%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8B

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

спасибо, с пулом я теперь немного разобрался, а с листнером как быть? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local event = require("event")

 

function modemMessage(eventname, receive, sender, chan, dist, message)

     print(message)

end

 

event.listen("modem_message", modemMessage)

 

event.listen цепляет к ивенту функцию которая вызывается при появлении ивента.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local event = require("event")

 

function modemMessage(eventname, receive, sender, chan, dist, message)

     print(message)

end

 

event.listen("modem_message", modemMessage)

 

event.listen цепляет к ивенту функцию которая вызывается при появлении ивента.

что то не понял как работает, можете показать на примере нажатия на клавишу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

local event = require("event")

 

function keydown(eventname, keyboardaddress, char, code, playername )

     print(playername.." нажал клавишу "..code)

end

 

event.listen("key_down", keydown)

 

пробовал так, но сразу закрывается 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пробовал так, но сразу закрывается 

Кинь код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

local event = require("event")

 

function keydown(eventname, keyboardaddress, char, code, playername )

     print(playername.." нажал клавишу "..code)

end

 

event.listen("key_down", keydown)

 

А можно сделать так, чтобы комп выполнял функцию update(), только тогда, когда нажата клавиша или пришёл сигнал с wifi?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кинь код.

извините, это моя ошибка, я ошибся с именем события. У меня все работает, большое вас спасибо

А можно сделать так, чтобы комп выполнял функцию update(), только тогда, когда нажата клавиша или пришёл сигнал с wifi?

по сути, для это и сделан листнер имхо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не мог бы кто-нибудь расссказать как работает event.listen на уровне кода? Как он вызывает функцию при появлении нового события?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, Mityanych сказал:

Не мог бы кто-нибудь расссказать как работает event.listen на уровне кода? Как он вызывает функцию при появлении нового события?

В event.listen мы передаём нашу функцию, которая должна обрабатывать нужное нам событие, а также строку, задающую фильтр по названию события. Когда наша программа выполнила все задачи, требовавшие немедленного выполнения, она обычно вызывает os.sleep. Всю остальную работу выполняет операционная система.

 

Внутри os.sleep вызывается computer.pullSignal, где происходит ожидание события. Название этого события сравнивается со всеми имеющимися фильтрами и при совпадении с каким-либо из них вызывается соответствующий ему обработчик событий. То есть, наша функция, которую мы ранее задали в event.listen. В эту функцию передаются данные, полученные в результате выполнения computer.pullSignal.

 

Вот и вся магия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...