/* CurveLib Sample04.fla */ package { import flash.display.MovieClip; import flash.text.TextField; import flash.events.MouseEvent; import com.violentcoding.drawing.curve.CurveGraphicsBase; import com.violentcoding.drawing.curve.CurveGraphics; import com.violentcoding.drawing.curvelib.CurvePoint; import com.violentcoding.drawing.curvelib.formula.*; import com.violentcoding.drawing.curve.event.CurveEvent; public class Sample04 extends MovieClip { // private var curve : CurveGraphicsBase; // コンストラクタ public function Sample04() { /*var curvePoint : CurvePoint = new CurvePoint( new BotanicCurveFormula( 5, 4, 1, 5 ) );*/ /*var curvePoint : CurvePoint = new CurvePoint( new RhodoneaFormula( 4, 1 ) );*/ /*var curvePoint : CurvePoint = new CurvePoint( new HypotrochoidFormula( 1, 5, 0.8 ) );*/ /*var curvePoint : CurvePoint = new CurvePoint( new EpitrochoidFormula( 1, 5, 0.5 ) );*/ var curvePoint : CurvePoint = new CurvePoint( new StarrRoseFormula( 8, 16, 16 ) ); curve = new CurveGraphics( 200, curvePoint ); curve.stepSize = 1 ; curve.startAngle = 0; curve.isClockWise = !true; curve.isLoop = !true; curve.x = 250; curve.y = 250; // 描画タイマー開始イベント curve.addEventListener( CurveEvent.CURVE_START, drawStartHandler ); addChild( curve ); // Drawボタンイベント drawBtn.addEventListener( MouseEvent.CLICK, drawHandler ); // Pauseボタンイベント pauseBtn.addEventListener( MouseEvent.CLICK, pauseHandler ); // Resetボタンイベント resetBtn.addEventListener( MouseEvent.CLICK, resetHandler ); } private var loopCnt : uint = 0; private var isDrawing : Boolean = false; private var isComplete : Boolean = true; // 描画タイマー開始イベントハンドラ private function drawStartHandler( evt:CurveEvent ) : void { /* trace(""); trace(">>> drawStartHandler"); trace("type : ",evt.type); trace("formula : ",evt.formula); trace("count : ",evt.count); trace("angle : ",evt.angle); trace("point : ",evt.point); trace("loop : ",evt.loop); trace("<<< drawStartHandler"); trace(""); */ isDrawing = true; isComplete = false; } private var drawCnt : int = 0; // 描画タイマー終了イベントハンドラ private function drawCompleteHandler01( evt:CurveEvent ) : void { /* trace(""); trace(">>> drawCompleteHandler"01); trace("type : ",evt.type); trace("formula : ",evt.formula); trace("count : ",evt.count); trace("angle : ",evt.angle); trace("point : ",evt.point); trace("loop : ",evt.loop); trace("<<< drawCompleteHandler01"); trace(""); */ state_tf.text = "Complete"; drawCnt++; if ( drawCnt > 6 ) { isDrawing = false; isComplete = true; drawBtn.enabled = true; pauseBtn.enabled = false; resetBtn.enabled = false; curve.removeEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler01 ); return; } curve.radius = 100 + ( 70 - drawCnt * 10 ); curve.beginFill( 0x000000, 0.25 ); curve.tickLineCurve( 10, true ); state_tf.appendText( " : isEndFill == true : r = "+ curve.radius.toString() ); } private function drawCompleteHandler02( evt:CurveEvent ) : void { /* trace(""); trace(">>> drawCompleteHandler02"); trace("type : ",evt.type); trace("formula : ",evt.formula); trace("count : ",evt.count); trace("angle : ",evt.angle); trace("point : ",evt.point); trace("loop : ",evt.loop); trace("<<< drawCompleteHandler02"); trace(""); */ state_tf.text = "Complete"; drawCnt++; if ( drawCnt > 6 ) { isDrawing = false; isComplete = true; drawBtn.enabled = true; pauseBtn.enabled = false; resetBtn.enabled = false; curve.removeEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler02 ); return; } curve.radius = 100 + ( 70 - drawCnt * 10 ); /*curve.beginFill( 0x000000, 0.25 );*/ curve.tickLineCurve( 10, false ); state_tf.appendText( " : isEndFill == false : r = "+ curve.radius.toString() ); } private var cnt : uint = 0; // Drawボタンイベントハンドラ private function drawHandler(evt:MouseEvent=null) : void { if ( isComplete ) { isComplete = false; drawBtn.enabled = false; pauseBtn.enabled = true; resetBtn.enabled = true; curve.clear(); cnt++; var id : uint = cnt % 2; switch ( id ) { case 1 : { draw01(); break; } case 0 : { draw02(); break; } default : { break; } } } } // Pauseボタンイベントハンドラ private function pauseHandler(evt:MouseEvent=null) : void { if ( isDrawing ) { curve.tickStop(); isDrawing = false; } else { curve.tickStart(); isDrawing = true; } } // Resetボタンイベントハンドラ private function resetHandler(evt:MouseEvent=null) : void { state_tf.text = "Reset"; isDrawing = false; isComplete = true; drawBtn.enabled = true; pauseBtn.enabled = false; resetBtn.enabled = false; pauseBtn.selected = false; curve.removeEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler01 ); curve.removeEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler02 ); curve.tickReset(); } private function draw01() : void { state_tf.text = "isEndFill == true : r = 200 "; drawCnt = 0; // 描画タイマー終了イベント curve.addEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler01 ); curve.beginFill( 0x000000, 0.25 ); curve.radius = 200; curve.tickLineCurve( 10, true ); } private function draw02() : void { state_tf.text = "isEndFill == false : r = 200 "; drawCnt = 0; // 描画タイマー終了イベント curve.addEventListener( CurveEvent.CURVE_COMPLETE, drawCompleteHandler02 ); curve.beginFill( 0x000000, 0.25 ); curve.radius = 200; curve.tickLineCurve( 10, false ); } } }