Gestureworks Flash Internals
Open Exhibits Internals
Open Exhibits uses a strong object oriented gesture processing model. Inside every touchobject (touchSprite and touchMovieclip) there is a gesture processing core that can work in parallel with other touch objects to look for gestures and manage gesture events.
The diagram above shows a simplified model of the internals of GestureWorks touchobject class. Each touch object is responsible for identifying weather a gesture has occurred that targets it.
The Gestureworks model allows each touchobject to accept any GML defined gesture. In this model touch point data is collected directly from Flash then the touchobject determines weather the touchpoint belongs to it. If it does the touch point is assigned to the cluster associated with the touchobject.
Each touchobject can have variety of gestures that it is configured to check for and analyze. If the matching criteria for a gesture is met in the analysis manager, then the cluster is pushed through an associated metric which will then calculate the required properties for the gesture. The results from the metric analysis are then filtered in the gesture pipeline as controlled by the pipeline manager. Finally the results from the pipeline are then passed to the gesture manager and the values are queried to determine if they qualify for dispatch.
At this stage the gesture result can be applied in two different ways. It can be natively mapped or dispatched as a gesture event. If the gesture is to be applied using native methods it will be mapped directly to the displayobject properties (as defined in GML) and then passed to the transformation manger which will apply these changes directly to the associated display object (which in most cases is the touch object itself).
For a gesture event: if the results qualify the values are packaged in the a gesture event object and dispatched to the display list manager. Internal Flash methods then take over the management of the gesture event which is eventually passed to back to the touchobject listener and applied as defined by the developer in the handler function.