flash on 2011-1-17

by akkey.guitar
♥0 | Line 105 | Modified 2011-01-17 22:55:06 | MIT License
play

ActionScript3 source code

/**
 * Copyright akkey.guitar ( http://wonderfl.net/user/akkey.guitar )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/dUsg
 */

package
{
    import flash.display.*;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import fl.controls.RadioButton;
    import fl.controls.RadioButtonGroup;

    import fl.controls.*;
 
    [SWF(width="500", height="400")]
    public class Main extends Sprite
    {
        private var color:Array = [0xFEBF05, 0xFFD65D];
        private var start:Point = new Point();
        private var canvas:Sprite = new Sprite();
        private var drag:Sprite = new Sprite();
 
        private var parentWidth:Number;
        private var parentHeight:Number;
 
        public function Main(){    
            init();
        }
 
        public function init():void
        {
            //Wonderfl.capture_delay(15);
            //親MCの大きさを定義
            parentWidth = stage.stageWidth;
            parentHeight = stage.stageHeight;
 
            //グラデーションの描画対象を定義
            canvas.graphics.beginFill(0xFFFFFF);
            canvas.graphics.drawRect(0, 0, parentWidth, parentHeight);
            canvas.graphics.endFill();
            addChild(canvas);
 
            //グラデーションを描画する際に使用する位置、角度情報を取得するドラッグオブジェクトの定義
            drag = new Sprite();
            addChild(drag);
 
            //色を決定するカラーパネル(ラジオボタン)
            var ColorPanel:MovieClip = new MovieClip();
            var shape:Shape = new Shape();
            shape.graphics.lineStyle(1, 0xCCCCCC);
            shape.graphics.beginFill(0xE1E1E1);
            shape.graphics.drawRect(0,0,150,200);
            shape.alpha = 0.5;
            ColorPanel.addChild(shape);
 
 
            //カラーパネルの描画位置
            ColorPanel.x = parentWidth - ColorPanel.width;
            ColorPanel.y = parentHeight - ColorPanel.height;
            addChild(ColorPanel);
 
 
            //選択色 配列
            var colorNames:Array = new Array("Yellow", "Blue", "Red", "Green", "Pear");
            var colorArr:Array = new Array([0xFEBF05, 0xFFD65D], [0x80E0F8, 0xCDF8FF], [0x6D0019, 0xA80329], [0x7DE31F, 0xC7FE30], [0xD1D360, 0xE5E695]);
            var radioButton:RadioButton;
            var radioGroup:RadioButtonGroup = new RadioButtonGroup("Colors");
 
            for(var i:int=0; i<colorArr.length; i++){
                radioButton = new RadioButton();
                radioButton.group = radioGroup;
                radioButton.label = colorNames[i];
                radioButton.value = colorArr[i];
                ColorPanel.addChild(radioButton);
                radioButton.x = 5;
                radioButton.y = i * radioButton.height + 70;
                radioButton.addEventListener(MouseEvent.CLICK, _SelectEvent);
                if(i==0) radioButton.selected = true;
            }
 
            stage.addEventListener(MouseEvent.MOUSE_DOWN, _onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUp);
        }
 
        //選択されたラジオボタン
        private function _SelectEvent(event:Event):void
        {
            color = event.currentTarget.value;
        }
 
        //グラデーションの幅と角度の確定 ----------------------------------------------------
        private function _onMouseDown(event:MouseEvent):void
        {
            start.x = mouseX;
            start.y = mouseY;
 
            drag.graphics.clear();
            drag.graphics.lineStyle(1.0, 0x7F7F7F);
            drag.graphics.beginFill(0xFFFFFF);
            drag.graphics.drawCircle(start.x, start.y, 3);
            drag.graphics.endFill();
 
            stage.addEventListener(MouseEvent.MOUSE_MOVE, _onMouseMove);
        }
 
        //---------------------------------------------------------------------------------
        private function _onMouseMove(event:MouseEvent):void
        {
            drag.graphics.clear();
 
            drag.graphics.lineStyle(1.0, 0x9F9F9F);
            drag.graphics.moveTo(start.x, start.y);
            drag.graphics.lineTo(mouseX, mouseY);
 
            drag.graphics.lineStyle(1.0, 0x7F7F7F);
            drag.graphics.beginFill(0x333333);
            drag.graphics.drawCircle(start.x, start.y, 3);
            drag.graphics.drawCircle(mouseX, mouseY, 3);
            drag.graphics.endFill();
        }
 
        //---------------------------------------------------------------------------------
        private function _onMouseUp(event:MouseEvent):void
        {
                drag.graphics.clear();
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, _onMouseMove);
 
                var dist:Number = Math.sqrt(Math.pow(mouseX - start.x, 2) + Math.pow(mouseY - start.y, 2));
                var radian:Number = Math.atan2(mouseY - start.y, mouseX - start.x);
 
                var matrix:Matrix = new Matrix();
                matrix.createGradientBox(parentWidth, parentHeight, 0, -parentWidth/2, -parentHeight/2);
 
                canvas.graphics.clear();
                canvas.graphics.beginGradientFill("linear", color, [1.0, 1.0], [127, 128 + dist / 1400 * 255], matrix);
                canvas.graphics.drawRect(-700, -700, parentWidth * 3, parentHeight * 3);
                canvas.graphics.endFill();
                canvas.x = start.x;
                canvas.y = start.y;
                canvas.rotation = radian / (Math.PI / 180);                
                //trace(color + "\n" + 128 + dist/parentWidth * 255 + "\n" + matrix + "\n" );
        }
    }
}

Forked