forked from: forked from: flash on 2010-6-22

by 9re forked from forked from: flash on 2010-6-22 (diff: 30)
♥0 | Line 52 | Modified 2010-07-02 17:29:22 | MIT License
play

ActionScript3 source code

/**
 * Copyright 9re ( http://wonderfl.net/user/9re )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/7BJx
 */

// forked from 9re's forked from: flash on 2010-6-22
// forked from Murai's flash on 2010-6-22
package {
    import flash.display.DisplayObject;
    import flash.events.Event;

    import flash.display.Sprite;
    public class Fuwafuwa extends Sprite {

        private var phase:Number;
        private var target:Sprite;
        private var target2:Sprite;
        private var yPos:Number;

        public function Fuwafuwa() {
            addChild(target=new Sprite());
            addChild(target2=new Sprite);
            
            fillRect(target, 0);
            fillRect(target2, 0xff);
            
            function fillRect($target:Sprite, color:uint):void {
                with($target){
                    x=stage.stageWidth/2;
                    y=stage.stageHeight/2;
                    graphics.beginFill(color, .3);
                    graphics.drawRect(-50, -50, 100, 100);
                    graphics.endFill();
                    graphics.lineStyle(5, 0xff0000, 0.25);
                    graphics.moveTo(-5, -5);
                    graphics.lineTo(5, 5);
                    graphics.moveTo(-5, 5);
                    graphics.lineTo(5, -5);
                }
            }
            
            yPos = target.y;
            
            graphics.lineStyle(1);
            graphics.moveTo(0,stage.stageHeight/2);
            graphics.lineTo(stage.stageWidth,stage.stageHeight/2);
            start();
        }

        private function loop(e:Event):void {
            phase++;
            var val:Number = Math.sin(phase*Math.PI/180 * 1.5) / 3;
            yPos += val;
            target2.y += val;
            target.y = yPos;
            
            //target.y = Math.cos(phase * Math.PI / 100) * 180 / Math.PI / 5 + stage.stageHeight / 2 + 50;
            target.rotation += val;
            target2.rotation += val;
        }

        public function start():void {
            phase = Math.random()*360>>0;
            if(!target.hasEventListener(Event.ENTER_FRAME))target.addEventListener(Event.ENTER_FRAME, loop);
        }

        public function stop():void {
            if(target.hasEventListener(Event.ENTER_FRAME))target.removeEventListener(Event.ENTER_FRAME, loop);
        }
    }
}