Put back automatic input adapter initialization

This commit is contained in:
Pavel fljot 2012-02-17 17:53:15 +02:00
parent 6d8b733d51
commit 3ba8a3df86

View file

@ -1,11 +1,16 @@
package org.gestouch.core
{
import org.gestouch.gestures.Gesture;
import org.gestouch.input.MouseInputAdapter;
import org.gestouch.input.TouchInputAdapter;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.InteractiveObject;
import flash.display.Shape;
import flash.display.Stage;
import flash.events.Event;
import flash.ui.Multitouch;
import flash.utils.Dictionary;
/**
@ -13,12 +18,14 @@ package org.gestouch.core
*/
public class GesturesManager implements IGesturesManager
{
public static var initDefaultInputAdapter:Boolean = true;
private static var _instance:IGesturesManager;
private static var _allowInstantiation:Boolean;
protected const _touchesManager:ITouchesManager = TouchesManager.getInstance();
protected const _frameTickerShape:Shape = new Shape();
protected var _inputAdapters:Vector.<IInputAdapter> = new Vector.<IInputAdapter>();
protected var _stage:Stage;
protected var _gestures:Vector.<Gesture> = new Vector.<Gesture>();
protected var _gesturesForTouchMap:Array = [];
protected var _gesturesForTargetMap:Dictionary = new Dictionary(true);
@ -90,6 +97,18 @@ package org.gestouch.core
targetGestures.push(gesture);
_gestures.push(gesture);
if (GesturesManager.initDefaultInputAdapter)
{
if (!_stage && gesture.target.stage)
{
installStage(gesture.target.stage);
}
else
{
gesture.target.addEventListener(Event.ADDED_TO_STAGE, gestureTarget_addedToStageHandler);
}
}
}
@ -108,6 +127,7 @@ package org.gestouch.core
if (targetGestures.length == 0)
{
delete _gesturesForTargetMap[target];
target.removeEventListener(Event.ADDED_TO_STAGE, gestureTarget_addedToStageHandler);
}
var index:int = _gestures.indexOf(gesture);
@ -200,6 +220,21 @@ package org.gestouch.core
//
//--------------------------------------------------------------------------
protected function installStage(stage:Stage):void
{
_stage = stage;
if (Multitouch.supportsTouchEvents)
{
addInputAdapter(new TouchInputAdapter(stage));
}
else
{
addInputAdapter(new MouseInputAdapter(stage));
}
}
protected function resetDirtyGestures():void
{
for each (var gesture:Gesture in _dirtyGestures)
@ -343,6 +378,17 @@ package org.gestouch.core
//
//--------------------------------------------------------------------------
protected function gestureTarget_addedToStageHandler(event:Event):void
{
var target:DisplayObject = event.target as DisplayObject;
target.removeEventListener(Event.ADDED_TO_STAGE, gestureTarget_addedToStageHandler);
if (!_stage && GesturesManager.initDefaultInputAdapter)
{
installStage(target.stage);
}
}
private function enterFrameHandler(event:Event):void
{
resetDirtyGestures();