mirror of
https://github.com/scratchfoundation/Gestouch.git
synced 2024-11-23 15:57:54 -05:00
99278b8ae0
Squashed commit of the following: commit97486ba2fe
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Wed Mar 7 01:12:50 2012 +0200 Bumped version to 0.3 commit764ca1522f
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Wed Mar 7 01:05:04 2012 +0200 Readme updates commit2efa95b85c
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 23:28:12 2012 +0200 Experimental requireGestureToFail API implemented commit4e02d4ae63
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 23:27:39 2012 +0200 Reformat condition commit7cdec34be4
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 23:17:23 2012 +0200 Swipe gesture algorithm rewritten for better recognition and failing commit9edcd04878
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 12:00:38 2012 +0200 Tiny cleanup commitb922057845
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 01:22:42 2012 +0200 New gesture for free transformation more precise and performant then combination of 3 commit5f28227c75
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 01:12:46 2012 +0200 Using custom GestureEvent and TransformGestureEvent from now on commit06df91ce04
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 00:52:50 2012 +0200 Custom GestureEvent and TransformGestureEvent because native one have useless phase and stupid constants commit398e41f610
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 00:51:25 2012 +0200 TouchesManager should not clone touches because they must persist during touch session. also good for performance. commit49b1139b4f
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Mar 6 00:50:34 2012 +0200 Touch properties update commit242966790a
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Sat Mar 3 17:41:29 2012 +0200 New gesture state commit4d5bef0252
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Mar 2 20:33:16 2012 +0200 Touch properties updates (and corresponding gestures fixes) commitb56107e059
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Thu Mar 1 23:56:45 2012 +0200 Minor cleanup for Gesture class commit51e8435b2d
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Thu Mar 1 18:12:35 2012 +0200 Input adapters initialization and disposing commit895e662bd5
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Wed Feb 29 22:20:09 2012 +0200 Minor performance fix for SwipeGesture commit3dcc78c267
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Wed Feb 29 13:54:59 2012 +0200 Added direction for PanGesture commit09dc1ddfc4
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Feb 21 20:14:13 2012 +0200 Touch#time fix (affects SwipeGesture) commit0532f4bfbb
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Mon Feb 20 17:43:43 2012 +0200 Moved some IGesturesManager methods under gestouch_internal namespace commit3ba8a3df86
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Feb 17 17:53:15 2012 +0200 Put back automatic input adapter initialization commit6d8b733d51
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Feb 3 15:57:11 2012 +0200 Moved input logic out to separate classes commitad767a4937
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Thu Feb 2 16:57:16 2012 +0200 Bugfix for mouse/finger release out of stage commit47f2f848e4
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Dec 30 18:26:16 2011 +0200 Optimized event dispatching commit3e1b5948b2
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Dec 30 16:47:52 2011 +0200 Small optimization for PanGesture commitd950550d16
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Fri Dec 30 03:19:56 2011 +0200 Catch all the Touch/Mouse events in capture phase GesturesManager now captures TOUCH_BEGIN or MOUSE_DOWN from the stage in capture phase to be able to prevent their propagation at the target without affecting the gesture regoznition. commit9d9fcd20ba
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Nov 22 10:40:42 2011 +0200 Fix central point calculation for more precise transformations commita036db1aef
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Nov 22 02:54:11 2011 +0200 Initial commit for the new architecture commit9144538e46
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Nov 1 14:10:05 2011 +0200 Added Gesture#enabled property commitd3ddb825b5
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Oct 25 15:19:05 2011 +0300 Fix condition for dispatching GestureTrackingEvent.GESTURE_TRACKING_END commitfbc4ab7422
Merge:dc489ba
e508862
Author: Pavel fljot <pavel.fljot@gmail.com> Date: Tue Oct 25 13:47:51 2011 +0300 Merge branch 'refs/heads/master' into develop
114 lines
No EOL
6.5 KiB
Text
114 lines
No EOL
6.5 KiB
Text
h1. Gestouch: NUI gestures detection framework for mouse, touch and multitouch AS3 development.
|
|
|
|
Gestouch is a ActionScript library/framework that helps you to deal with single- and multitouch gestures for building better NUI (Natural User Interface).
|
|
|
|
|
|
h3. Why? There's already gesture support in Flash/AIR!
|
|
|
|
Yes, last versions of Flash Player and AIR runtimes have built-in touch and multitouch support, but the gestures support is very poor: only small set of gestures are supported, they depend on OS, they are not customizable in any way, only one can be processed at the same time and, finally, you are forced to use either raw TouchEvents, or gestures (@see http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ui/Multitouch.html#inputMode).
|
|
_Upd:_ With "native way" you also won't get anything out of Stage3D and of custom input like TUIO protocol.
|
|
|
|
|
|
|
|
h3. What Gestouch does in short?
|
|
|
|
Well basically there's 3 distinctive tasks to solve.
|
|
# To provide various input. It can be standard MouseEvents, TouchEvents or more complex things like custom input via TUIO protocol for your hand-made installation. So what we get here is Touches (touch points).
|
|
# To recognize gesture out of touch points. Each type of Gesture has it's own inner algorithms that ...
|
|
# To manage gestures relations. Because they may "overlap" and once some has been recognized probably we don't want other to do so.
|
|
|
|
Gestouch solves these 3 tasks.
|
|
I was hardly inspired by Apple team, how they solved this (quite recently to my big surprise! I thought they had it right from the beginning) in they Cocoa-touch UIKit framework. Gestouch is very similar in many ways. But I wouldn't call it "direct port" because 1) the whole architecture was implemented based just on conference videos and user documentation 2) flash platform is a different platform with own specialization, needs, etc.
|
|
So I want Gestouch to go far beyond that.
|
|
|
|
Features:
|
|
* Pretty neat architecture! Very similar to Apple's UIGestureRecognizers (Cocoa-Touch UIKit)
|
|
* Doesn't require any additional software (may use runtime's build-in touch support)
|
|
* Works across all platforms (where Flash Player or AIR run of course) in exactly same way
|
|
* Doesn't break your DisplayList architecture (could be easily used for Flex development)
|
|
* Extendable. You can write your own application-specific gestures
|
|
* Open-source and free
|
|
* *_+Planning to make it work with Stage3D. Hello Starling!+_*
|
|
|
|
|
|
|
|
h3. Current state of the project
|
|
|
|
v0.3 introduces "new architecture". I'm planning to develop everything in develop branch and merge to master only release versions. Release versions suppose to be pretty stable. As much as I test them on the examples project.
|
|
Current plan is to fix possible bugs in v0.3.#, and I really want to introduce Stage3D support in v0.4. So watch both branches.
|
|
And I hope people to become giving some real feedback at least.
|
|
|
|
|
|
|
|
h3. Getting Started
|
|
|
|
Like so:
|
|
<pre><code>var doubleTap:TapGesture = new TapGesture(myButton);
|
|
doubleTap.numTapsRequired = 2;
|
|
doubleTap.addEventListener(TapGestureEvent.GESTURE_TAP, onDoubleTap);
|
|
...
|
|
private function onDoubleTap(event:TapGestureEvent):void
|
|
{
|
|
// handle double tap!
|
|
}
|
|
</code></pre>
|
|
or
|
|
<pre><code>var freeTransform:TransformGesture = new TransformGesture(myImage);
|
|
freeTransform.addEventListener(TransformGestureEvent.GESTURE_TRANSFORM, onFreeTransform);
|
|
...
|
|
private function onFreeTransform(event:TransformGestureEvent):void
|
|
{
|
|
// move, rotate, scale — all at once for better performance!
|
|
}
|
|
</code></pre>
|
|
|
|
* Check the "Gestouch Examples":http://github.com/fljot/GestouchExamples project for a quick jump-in
|
|
* *+Highly recommended+* to watch videos from Apple WWDC conferences as they explain all the concepts and show more or less real-life examples. @see links below
|
|
* "Introduction video":http://www.youtube.com/watch?v=NjkmB8rfQjY - my first video, currently outdated
|
|
* TODO: wiki
|
|
|
|
|
|
|
|
h3. Roadmap, TODOs
|
|
|
|
* *Stage3D support.* Hello Starling! Must move away from target as InteractiveObject to some abstract adapters.
|
|
* "Massive gestures" & Clusters. For bigger form-factor multitouch usage, when gestures must be a bit less about separate fingers but rather touch clusters (massive multitouch)
|
|
* -Simulator (for testing multitouch gestures without special devices)- With new architecture it must be relatively easy to create SimulatorInputAdapter
|
|
* Chained gestures concept? To transfer touches from one gesture to another. Example: press/hold for circular menu, then drag it around.
|
|
* 3-fingers (3D) gestures (two fingers still, one moving)
|
|
|
|
|
|
|
|
h3. News
|
|
|
|
* "Follow me on Twitter":http://twitter.com/fljot for latest updates
|
|
* Don't forget about "issues":https://github.com/fljot/Gestouch/issues section as good platform for discussions.
|
|
|
|
|
|
|
|
h3. Contribution, Donations
|
|
|
|
Contribute, share. Found it useful, nothing to add? Hire me for some project.
|
|
|
|
|
|
|
|
h3. Links
|
|
|
|
* "Gestouch Examples":http://github.com/fljot/GestouchExamples
|
|
|
|
* "Apple WWDC 2011: Making the Most of Multi-Touch on iOS":https://developer.apple.com/videos/wwdc/2011/?id=118
|
|
* "Apple WWDC 2010: Simplifying Touch Event Handling with Gesture Recognizers":https://developer.apple.com/videos/wwdc/2010/?id=120
|
|
* "Apple WWDC 2010: Advanced Gesture Recognition":https://developer.apple.com/videos/wwdc/2010/?id=121
|
|
* "Event Handling Guide for iOS":https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/
|
|
* "UIGestureRecognizer Class Reference":https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/
|
|
|
|
* "TUIO":http://www.tuio.org
|
|
|
|
|
|
h2. License
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |