Compare commits

...
This repository has been archived on 2025-05-04. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.

10 commits

Author SHA1 Message Date
Shane M. Clements
319c6a2602 Updating target on touch release 2015-09-21 14:28:53 -06:00
Shane M. Clements
16c24d5e29 Decreased tolerance 2015-09-21 14:28:11 -06:00
Shane M. Clements
8c815c4e14 Only allow single-finger taps to press and release the same target. 2015-05-28 10:52:02 -06:00
Shane M. Clements
c7278faa7d Now sending the touch to getHierarchy() 2015-03-05 17:18:09 -07:00
Shane M. Clements
e696ed6e98 Fixed another compile error. 2015-03-05 13:44:12 -07:00
Shane M. Clements
6fd8baacbf Fixed compile errors. Now trying to use the object's constructor to select the proper DisplayListAdapter. 2015-03-05 13:43:25 -07:00
Pavel fljot
e2831d9dbd Merge branch 'refs/heads/develop' 2013-12-25 21:39:12 +02:00
Pavel fljot
89e3acf473 Merge branch 'refs/heads/develop' 2013-06-26 13:50:51 +03:00
Pavel fljot
55294a9bf0 Merge branch 'refs/heads/develop' 2013-05-31 15:44:11 +03:00
Pavel fljot
e33887befa Merge branch 'hotfixes/swipe-slop' 2013-01-06 18:10:47 +02:00
8 changed files with 68 additions and 27 deletions

View file

@ -45,14 +45,14 @@ package org.gestouch.core
*/
public static function get touchesManager():TouchesManager
{
return _touchesManager ||= new TouchesManager(gesturesManager);
return _touchesManager ? _touchesManager : _touchesManager = new TouchesManager(gesturesManager);
}
private static var _gesturesManager:GesturesManager;
public static function get gesturesManager():GesturesManager
{
return _gesturesManager ||= new GesturesManager();
return _gesturesManager ? _gesturesManager : _gesturesManager = new GesturesManager();
}
@ -106,6 +106,12 @@ package org.gestouch.core
gestouch_internal static function getDisplayListAdapter(object:Object):IDisplayListAdapter
{
// Try to find use the object's final class
var dla:IDisplayListAdapter = _displayListAdaptersMap[object.constructor as Class];
if (dla) {
return dla;
}
for (var key:Object in _displayListAdaptersMap)
{
var targetClass:Class = key as Class;

View file

@ -48,7 +48,7 @@ package org.gestouch.core
{
_stage = stage;
Gestouch.inputAdapter ||= new NativeInputAdapter(stage);
if (!Gestouch.inputAdapter) Gestouch.inputAdapter = new NativeInputAdapter(stage);
Gestouch.addTouchHitTester(new NativeTouchHitTester(stage));
}
@ -217,7 +217,7 @@ package org.gestouch.core
{
throw new Error("Display list adapter not found for target of type '" + getQualifiedClassName(target) + "'.");
}
const hierarchy:Vector.<Object> = displayListAdapter.getHierarchy(target);
const hierarchy:Vector.<Object> = displayListAdapter.getHierarchy(target, touch);
const hierarchyLength:uint = hierarchy.length;
if (hierarchyLength == 0)
{

View file

@ -1,11 +1,11 @@
package org.gestouch.core
{
/**
/**
* @author Pavel fljot
*/
public interface IDisplayListAdapter extends IGestureTargetAdapter
{
function getHierarchy(target:Object):Vector.<Object>;
function getHierarchy(target:Object, touch:Touch):Vector.<Object>;
function reflect():Class;
}

View file

@ -176,7 +176,37 @@ package org.gestouch.core
const touch:Touch = _touchesMap[touchID] as Touch;
if (!touch)
return;// touch with specified ID isn't registered
var target:Object;
var altTarget:Object;
var location:Point = new Point(x, y);
for each (var hitTester:ITouchHitTester in _hitTesters)
{
target = hitTester.hitTest(location);
if (target)
{
if ((target is Stage))
{
// NB! Target is flash.display::Stage is a special case. If it is true, we want
// to give a try to a lower-priority (Stage3D) hit-testers.
altTarget = target;
continue;
}
else
{
// We found a target.
break;
}
}
}
if (!target && !altTarget)
{
throw new Error("Not touch target found (hit test)." +
"Something is wrong, at least flash.display::Stage should be found." +
"See Gestouch#addTouchHitTester() and Gestouch#inputAdapter.");
}
touch.target = target || altTarget;
touch.updateLocation(x, y, getTimer());
delete _touchesMap[touchID];

View file

@ -1,14 +1,14 @@
package org.gestouch.extensions.native
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Stage;
import flash.geom.Point;
import flash.utils.Dictionary;
import org.gestouch.core.IDisplayListAdapter;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Stage;
import flash.utils.Dictionary;
import org.gestouch.core.IDisplayListAdapter;
import org.gestouch.core.Touch;
/**
/**
* @author Pavel fljot
*/
final public class NativeDisplayListAdapter implements IDisplayListAdapter
@ -74,11 +74,11 @@ package org.gestouch.extensions.native
}
public function getHierarchy(genericTarget:Object):Vector.<Object>
public function getHierarchy(genericObj:Object, touch:Touch):Vector.<Object>
{
var list:Vector.<Object> = new Vector.<Object>();
var i:uint = 0;
var target:DisplayObject = genericTarget as DisplayObject;
var target:DisplayObject = genericObj as DisplayObject;
while (target)
{
list[i] = target;

View file

@ -1,14 +1,11 @@
package org.gestouch.extensions.starling
{
import starling.display.DisplayObject;
import starling.display.DisplayObjectContainer;
import flash.utils.Dictionary;
import org.gestouch.core.IDisplayListAdapter;
import org.gestouch.core.IDisplayListAdapter;
import org.gestouch.core.Touch;
import flash.utils.Dictionary;
/**
/**
* @author Pavel fljot
*/
final public class StarlingDisplayListAdapter implements IDisplayListAdapter
@ -44,11 +41,11 @@ package org.gestouch.extensions.starling
}
public function getHierarchy(genericTarget:Object):Vector.<Object>
public function getHierarchy(target:Object, touch:Touch):Vector.<Object>
{
var list:Vector.<Object> = new Vector.<Object>();
var i:uint = 0;
var target:DisplayObject = genericTarget as DisplayObject;
var target:DisplayObject = target as DisplayObject;
while (target)
{
list[i] = target;

View file

@ -51,7 +51,7 @@ package org.gestouch.gestures
* (not an accidental offset on touch),
* based on 20 pixels on a 252ppi device.
*/
public static var DEFAULT_SLOP:uint = Math.round(20 / 252 * flash.system.Capabilities.screenDPI);
public static var DEFAULT_SLOP:uint = Math.round(10 / 252 * flash.system.Capabilities.screenDPI);
/**
* If a gesture should receive a touch.

View file

@ -28,6 +28,7 @@ package org.gestouch.gestures
protected var _numTouchesRequiredReached:Boolean;
protected var _tapCounter:uint = 0;
protected var _touchBeginLocations:Vector.<Point> = new Vector.<Point>();
protected var firstTouchTarget:Object;
public function TapGesture(target:Object = null)
@ -102,6 +103,7 @@ package org.gestouch.gestures
_timer.reset();
_timer.delay = maxTapDuration;
_timer.start();
firstTouchTarget = touch.target;
}
if (numTapsRequired > 1)
@ -155,17 +157,23 @@ package org.gestouch.gestures
if (!_numTouchesRequiredReached)
{
setState(GestureState.FAILED);
firstTouchTarget = null;
}
else if (touchesCount == 0)
{
// reset flag for the next "full press" cycle
_numTouchesRequiredReached = false;
_tapCounter++;
_timer.reset();
if (_tapCounter == numTapsRequired)
{
if (numTouchesRequired == 1 && firstTouchTarget && touch.target != firstTouchTarget) {
firstTouchTarget = null;
return;
}
setState(GestureState.RECOGNIZED);
}
else