/* AS3 TransformationPoint.as Flash CS3 extension "TrasformationPoint" Version 1.0.0 author Eiji Saito WindowSWF/TrasformationPoint.swf WindowSWF/TrasformationPoint/TransformationPoint.jsfl */ package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.events.FocusEvent; import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.system.Capabilities; import flash.system.IME; import adobe.utils.*; /** * MovieClip sub class description. * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * * @author Eiji Saito * @since 2008-05-11 */ public class TransformationPoint extends MovieClip { //-------------------------------------- // CLASS CONSTANTS //-------------------------------------- private const JSFL_USE_FOLDER : String = "WindowSWF/"; private const JSFL_SUB_FOLDER : String = "TransformationPoint/"; private const JSFL_FILE_NAME : String = "TransformationPoint.jsfl"; private const OK_FUNCTION_NAME : String = "setAdvancedTransformationPoint"; private const RESET_FUNCTION_NAME : String = "resetTransformationPoint"; //-------------------------------------- // CONSTRUCTOR //-------------------------------------- /** * @Constructor */ public function TransformationPoint() { super(); stage.showDefaultContextMenu = false; stage.scaleMode = StageScaleMode.SHOW_ALL; stage.align = StageAlign.TOP; } //-------------------------------------- // PRIVATE VARIABLES //-------------------------------------- private var isElementMode : Boolean = true; private var isCenterMode : Boolean = true; //-------------------------------------- // GETTER/SETTERS //-------------------------------------- //-------------------------------------- // PUBLIC METHODS //-------------------------------------- //-------------------------------------- // EVENT HANDLERS //-------------------------------------- /* private function modeChangeHandler( event:Event ) : void { var isElementSelected : Boolean = element_rb.selected; if ( isElementSelected != isElementMode ) { isElementMode = isElementSelected; } } */ private function pointChangeHandler( event:Event ) : void { var isCenterSelected : Boolean = center_rb.selected; if ( isCenterSelected != isCenterMode ) { syncCenterMode(); isCenterMode = isCenterSelected; } } private function ratioChangeHandler( event:Event ) : void { syncRatioMode(); } private function applyClickHandler( event:MouseEvent ) : void { if ( pX_txi.text == "" ) { pX_txi.text = "0"; } if ( pY_txi.text == "" ) { pY_txi.text = "0"; } var pointX : String = pX_txi.text; var pointY : String = pY_txi.text; var ratioMode = ratio_cb.selected; if ( !isCenterMode && ratioMode ) { if ( rX_txi.text == "" ) { rX_txi.text = "0"; } if ( rY_txi.text == "" ) { rY_txi.text = "0"; } pointX = rX_txi.text; pointY = rY_txi.text; } var paramStr : String = ""; paramStr += pointX; paramStr += ", "; paramStr += pointY; paramStr += ", "; paramStr += isCenterMode.toString(); paramStr += ", "; paramStr += ratioMode.toString(); paramStr += ", "; paramStr += isElementMode.toString(); runJSFL( JSFL_FILE_NAME, OK_FUNCTION_NAME, paramStr ); } public function resetClickHandler( event:MouseEvent ) : void { runJSFL( JSFL_FILE_NAME, RESET_FUNCTION_NAME ); } private function focusHandler( event:FocusEvent ) : void { if ( Capabilities.hasIME ) { IME.enabled = false; } } //-------------------------------------- // PRIVATE & PROTECTED INSTANCE METHODS //-------------------------------------- private function init() : void { // element_rb.addEventListener( Event.CHANGE, modeChangeHandler ); center_rb.addEventListener( Event.CHANGE, pointChangeHandler ); ratio_cb.addEventListener( Event.CHANGE, ratioChangeHandler ); apply_btn.addEventListener( MouseEvent.CLICK, applyClickHandler ); reset_btn.addEventListener( MouseEvent.CLICK, resetClickHandler ); // element_rb.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); // selection_rb.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); center_rb.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); leftTop_rb.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); ratio_cb.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); pX_txi.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); pY_txi.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); rX_txi.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); rY_txi.addEventListener( FocusEvent.FOCUS_IN, focusHandler ); pX_txi.restrict = "0-9.+\\-*/"; pY_txi.restrict = "0-9.+\\-*/"; rX_txi.restrict = "0-9.+\\-*/"; rY_txi.restrict = "0-9.+\\-*/"; syncCenterMode(); } private function syncCenterMode() : void { var centerMode = center_rb.selected; if ( centerMode ) { icon_mc.gotoAndStop( "CTMode" ); pCover_mc.visible = false; pX_txi.tabEnabled = true; pY_txi.tabEnabled = true; rCover_mc.visible = true; ratioCover_mc.visible = false; ratio_cb.tabEnabled = false; rX_txi.tabEnabled = false; rY_txi.tabEnabled = false; } else { icon_mc.gotoAndStop( "LTMode" ); rCover_mc.visible = false; ratioCover_mc.visible = true; ratio_cb.tabEnabled = true; syncRatioMode(); } } private function syncRatioMode() : void { var ratioMode = ratio_cb.selected; if ( ratioMode ) { icon_mc.gotoAndStop( "RTMode" ); pCover_mc.visible = true; pX_txi.tabEnabled = false; pY_txi.tabEnabled = false; ratioCover_mc.visible = false; rX_txi.tabEnabled = true; rY_txi.tabEnabled = true; } else { icon_mc.gotoAndStop( "LTMode" ); pCover_mc.visible = false; pX_txi.tabEnabled = true; pY_txi.tabEnabled = true; ratioCover_mc.visible = true; rX_txi.tabEnabled = false; rY_txi.tabEnabled = false; } } private function runJSFL( jsflFileName:String, jsflFuncName:String, paramStr:String = "" ) :void { var jsflFileStr : String = JSFL_USE_FOLDER + JSFL_SUB_FOLDER; jsflFileStr += jsflFileName; jsflFileStr = '"' + jsflFileStr + '"'; var runStr : String = "fl.runScript( fl.configURI + "; runStr += jsflFileStr; runStr += ", "; runStr += '"' + jsflFuncName + '"'; if ( paramStr != "" ) { runStr += ", "; runStr += paramStr; } runStr += " );"; MMExecute( runStr ); } } }