package com.as3dmod.modifiers {
import com.as3dmod.IModifier;
import com.as3dmod.core.Modifier;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
/**
* Modifier with user-defined behavior.
*
* Allows users to create modifiers on the fly without creating dedicated class.
*
* @example The following example demonstrates how to use UserDefined modifier
* to shift objects by 10 units along X axis:
*
* var modifier:UserDefined = new UserDefined;
* modifier.addEventListener (Event.CHANGE, onVerticesCoordsChange);
* stack.addModifier (modifier);
* ...
* private function onVerticesCoordsChange (evt:Event):void {
* var modifier:UserDefined = UserDefined (evt.target);
* var vertices:Array = modifier.getVertices ();
* for each (var vertex:VertexProxy in vertices) {
* vertex.x += 10;
* }
* }
*
*
* @author makc
*/
public class UserDefined extends Modifier implements IModifier, IEventDispatcher {
private var dispatcher:EventDispatcher;
/**
* @private no parameters to document
*/
public function UserDefined() {
dispatcher = new EventDispatcher(this);
}
/**
* @inheritDoc
*/
public function apply():void {
dispatchEvent (new Event (Event.CHANGE));
}
/**
* @inheritDoc
*/
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{
dispatcher.addEventListener(type, listener, useCapture, priority);
}
/**
* @inheritDoc
*/
public function dispatchEvent(evt:Event):Boolean {
return dispatcher.dispatchEvent(evt);
}
/**
* @inheritDoc
*/
public function hasEventListener(type:String):Boolean {
return dispatcher.hasEventListener(type);
}
/**
* @inheritDoc
*/
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
dispatcher.removeEventListener(type, listener, useCapture);
}
/**
* @inheritDoc
*/
public function willTrigger(type:String):Boolean {
return dispatcher.willTrigger(type);
}
}
}