Перейти к публикации
  • 0
JaggerDer

os.pullEvent/os.pullEventRaw

Вопрос

Я здесь и у меня несколько вопросов.

  1. Где можно посмотреть как работают стандартные события os.pullEvent и os.pullEventRaw, другими словами хочу посмотреть на их исходный код.
  2. Я хочу сделать свое событие mouse_double_click. Я его сделал. Работает. Да. С костылями. С костылями по типу parallel и отправки второго кастомного события mouse_click_checked(тот же самый mouse_click, только с окончанием _checked). В чем проблема? Проблема в том, что без костыля mouse_event_checked, события mouse_double_click и mouse_click начинают конкурировать, причем mouse_click выигрывет эту войну. Возможно ли как то переписать mouse_click так, чтобы при двойном щелчке отправлялось мое событие mouse_double_click, а mouse_click подавлялось? Если двойного щелчка нет, то mouse_click не подавляется, а mouse_double_click не отправляется в пул. Повторюсь. Алгоритм двойного щелчка у меня есть. Как переписать событие mouse_click?

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


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

4 ответа на этот вопрос

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

  • 0

 

  1. Где можно посмотреть как работают стандартные события os.pullEvent и os.pullEventRaw, другими словами хочу посмотреть на их исходный код.
function os.pullEventRaw( _sFilter )
	return coroutine.yield( _sFilter )
end

function os.pullEvent( _sFilter )
	local eventData = { os.pullEventRaw( _sFilter ) }
	if eventData[1] == "terminate" then
		error( "Terminated", 0 )
	end
	return unpack( eventData )
end

Как сказал Нео, генерация самих событий скрыта где то в исходниках мода. А вот так они обрабатываются биосом CraftOS (см. код выше)

Подавить mouse_click можно так: в os.pullEvent вставляешь проверку

eventData[1] == "mouse_click"

и если да, то ждешь еще какое то время (0,2 сек, например)

Если в течении какого то времени приходит еще один "mouse_click", возвращаешь mouse_double_click.

Если нет, возвращаешь mouse_click.

Но, что плохого в том если придет и mouse_click и mouse_double_click?

Изменено пользователем Zer0Galaxy
  • Like 3

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


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

CC, С закрытым исходным кодом.

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


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

Но, что плохого в том если придет и mouse_click и mouse_double_click?

У меня в программе по клику мыши по GUI выбирается цвет bg, а по даблклику цвет символа. Выходит так, что цвет символа и фона становятся одинаковыми.

 

Спасибо за ответы.

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

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


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

У меня в программе по клику мыши по GUI выбирается цвет bg, а по даблклику цвет символа. Выходит так, что цвет символа и фона становятся одинаковыми.

А ПКМ?

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×