In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: flash on 2010-4-13

Get Adobe Flash player
by misinoe 22 May 2012
    Embed
/**
 * Copyright misinoe ( http://wonderfl.net/user/misinoe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/swN4
 */

// forked from kihon's flash on 2010-4-13
package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.Point;
 
    public class Main extends Sprite
    {    
        private var bd:BitmapData;
        private var brush:BitmapData;
        private var prev:Point = new Point();
 
        public function Main()
        {    
            bd = new BitmapData(stage.stageWidth, stage.stageHeight, false);
            addChild(new Bitmap(bd));
 
            var circle:Sprite = new Sprite();
            circle.graphics.beginFill(0x0,0.025);    // 重ねるため、半透明にしました
            circle.graphics.drawCircle(3, 3, 3);
            circle.graphics.endFill();
 
            brush = new BitmapData(6, 6, true, 0x0);
            brush.draw(circle);
 
            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        }
 
        private function onMouseDown(event:MouseEvent):void
        {    
            prev.x = mouseX;
            prev.y = mouseY;
 
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
 
        private function onMouseMove(event:MouseEvent):void
        {
            var dis:Number = Math.sqrt( Math.pow( mouseX-prev.x,2)+Math.pow(mouseY-prev.y,2 ) ) * 10;    // 距離を計算して10分の1ピクセルずつ塗っていくようにしました
            var tx:Number = (mouseX - prev.x) / dis;
            var ty:Number = (mouseY - prev.y) / dis;
 
            for (var i:int = 0; i < dis; i++)
            {
                bd.copyPixels(brush, brush.rect, new Point(prev.x - brush.width / 2, prev.y - brush.height / 2));
                prev.x += tx;
                prev.y += ty;
            };
            event.updateAfterEvent();    // マウスが動く毎に再描画するようにしました
        }
 
        private function onMouseUp(event:MouseEvent):void
        {
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
    }
}