Mousewheel for zoom

BlitzMax Forums/BlitzMax Programming/Mousewheel for zoom

GfK(Posted 2008) [#1]
Hello.

Having a little problem with this. I've already written code to make my map zoom in and out - that's not the issue.

I was going to use MouseZ() so I can control the zoom level with the mousewheel. The problem is that if I scroll the mouse up one click, MouseZ() returns 1, and continues to return 1 until I move it up another click, then it returns 2.

I need to change the zoom factor smoothly-ish between 0.5028, and 1. I'm really not interested in how far the mousewheel has been scrolled, just whether its moved up or down.

What's your thoughts on how best to achieve this? Is there some way I can reset the mouseZ counter? I know I could store the value of the last MouseZ() and calculate + or - that way but it seems a bit kludgy. Must be a better way?

[edit] I've just discovered that FlushMouse will do this, but I don't want everything to do with the mouse to be reset with it.


BladeRunner(Posted 2008) [#2]
I'd just build a function for this, what is what you suggested anyways.

Function MouseZSpeed:Int() 
	Global _mz:Int
	Local mz:Int = MouseZ()
	If mz = _mz Then
		Return 0
	EndIf
	If mz > _mz Then
		_mz = mz
		Return 1
	EndIf
	_mz = mz
	Return -1

End Function



Perturbatio(Posted 2008) [#3]
Yep, I'd probably resort to MouseZSpeed as well


GfK(Posted 2008) [#4]
Yep, had stuff of my own in the code archives similar to that although mine only catered for mouse x/y speed. It does work pretty well, just wish there'd been a more elegant solution.

cheers. :)


Grey Alien(Posted 2008) [#5]
Yeah I just ended up holding the last value in memory and looking for a change.