Показать сообщение отдельно
Старый 21.10.2007, 21:00   #1
jimon
 
Сообщений: n/a
MouseZSpeed и FlushMouse .. подводный камень

функции MouseZSpeed как таковой в BlitzMax нету,
есть только функция MouseZ() ... собсно написать MouseZSpeed
не состовляет труда ..

у меня она выглядит так
	Field OldMouseZ%
	Field MouseZSpeed#
	Method UpdateMouseZSpeed#()
		MouseZSpeed = MouseZ() - OldMouseZ
		OldMouseZ = MouseZ()
	End Method
и обновляется раз в игровой цикл ... чтобы не парить мозги

есть функция FlushMouse ... по описанию она просто очищает состояние
кнопок, но есть одна проблемка

в меню у меня постоянно вызывается FlushMouse для того чтобы
обнулять кнопки, а то один раз не провериш кнопку - и усе

тут мне надо зделать прокрутку списка, и я юзаю MouseZSpeed
.... прошло около часа .... в общем жутко напуганый
зделал дебаг того что возращает MouseZSpeed ... и так
1 (тут я крутил колесико)
-1 (тут не крутил)
0 (тут тож не трогал)
0
0
-1 (вот еще крутил)
1 (а тут нет)
0
0
0
WTF ?! .... так
чтобы не парить теперь вам мозги как я парил .. идем сразу :
/mod/brl.mod/polledinput.mod/polledinput.bmx

там смотрим ету функцию (FlushMouse)
Function FlushMouse()
	PollSystem
	For Local i=0 Until 4
		mouseStates[i]=0
		mouseHits[i]=0
	Next
	mouseLocation[2]=0
End Function
я вот что-то не понимаю ... значит позицию по X,Y они не обнуляют
а Z чем-то им приелся и решили обнулять,
я не хочу разбиратся почему и как ... решил поступить по другому

тупо пишем в тот же файл :
Rem
bbdoc: Flush only mouse button states
about:
#FlushMouseKeys resets the state of all mouse buttons to 'off'.
but doesnt change the position of Z ! :)
End Rem
Function FlushMouseKeys()
	PollSystem
	For Local i=0 Until 4
		mouseStates[i]=0
		mouseHits[i]=0
	Next
End Function
билдим модули и документацию ....
теперь в меню я вызываю FlushMouseKeys() и не имею проблемм

ps. не бойтесь изменять модули блицмакса,
марк не всегда прав
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
Nex (07.05.2009), NitE (28.01.2009), Randomize (27.01.2009)