I recently bought my first Bamboo, a Wacom tablet that recognises letters from shapes drawn with the stylus. It tickled memories of my first experience with gesture-controlled application: using mouse gestures, web browsers such as Maxthon (and later Opera) allowed users to quickly move back and forth through webpages in the history, switch between different tabs, and so on. I was facinated by its neat user interface, as it takes away traditional mouse clicks. Of course, sophisticated gesture-controlled devices such as the Kinect, iPad and iPhone are now available – but it all started with the good old PC. In this tutorial, you’ll learn how to develop a photo gallery that recognises singular mouse gestures.
Final Result Preview
Let's take a look at the final result we will be working towards. To pan the photo galley in the four main directions, click and drag the mouse in the relevant direction. To scale a photo, drag the mouse South-East to scale up and drag the mouse North-West to scale back to the default size.
(Note: this doesn’t snap to center the photo when panning; it’s sensitive to the length of the line that you draw.)
Step 1: Tutorial Flow
Here’s what you’ll learn in this tutorial, and the order in which you’ll learn it:
- Vector interpretation of mouse gestures
- Hard coded implementation of mouse gestures
- Class to detect singular mouse gestures
- Sample application (photo gallery) using mentioned class
Step 2: Gesture Detection: Vector Analysis
It is important to understand the vector math involved in detecting mouse gestures. Having understood detection of a single direction, one can easily extend the understanding to apply to all eight directions.
The Flash presentation below shows steps of detecting a single mouse gesture to due right. To scroll through frames in the Flash presentation below, (mouse down – mouse move – mouse up) in any of the following directions:
- Eastward to scroll frame forward
- Westward to scroll frame backward
- Northward to jump to last frame
- Southward to jump to first frame
No comments:
Post a Comment