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

みずたまふわふわ

たのしそうだったからforkした。
Get Adobe Flash player
by shohei909 03 Oct 2010
/**
 * Copyright shohei909 ( http://wonderfl.net/user/shohei909 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2tjp
 */

// forked from shohei909's forked from: クラスのマウスイベント(?)
// forked from wass's クラスのマウスイベント(?)
/*
    たのしそうだったからforkした。
*/

package {
    import flash.display.*;
    import flash.events.Event;
    import flash.text.*; 
    import frocessing.color.ColorHSV;
    [SWF(frameRate="30", width="465", height="465")]
    public class MyFirstAnimation extends Sprite { 
        private var _cles:Vector.<Circle> = new Vector.<Circle>();
        public function MyFirstAnimation() {
            graphics.beginFill(0);
            graphics.drawRect(0, 0, 465, 465);
            
            // クラスCircleのインスタンスを作る
            for(var i:uint = 0; i < 50; i++ ){
                var color:ColorHSV = new ColorHSV(i*7.2,0.7,0.1);
                var cle:Circle = new Circle(-i+60,color.value,0.5);
                cle.x = cle.y = 465 / 2;
                addChild(cle).blendMode = "add";
                _cles.push(cle);
            }
            
            
            // 1フレーム毎に実行する処理にenterFrameHandlerを追加する
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
 
        // フレーム毎に行われる処理 [25行目で登録される]
        private function enterFrameHandler(e:Event):void {
            // 1フレーム分動かす
            for each(var cle:Circle in _cles){
                cle.move();
            }
        }
    }
}
 
import flash.display.Sprite;
import flash.events.MouseEvent;  

class Circle extends Sprite {
    public var vx:Number = 0;
    public var vy:Number = 0;
    public var radius:Number;
    public var fillColor:uint;
    public var sp:Number;    
    public var drag:Boolean = false; //現在ドラッグ中かどうか?
    
    // コンストラクタ
    public function Circle(_radius:Number, _fillColor:uint = 0xff0000, _sp:Number = 5) {
        // 塗り_fillColor, 半径_radiusの円
        graphics.beginFill(_fillColor);
        graphics.drawCircle(0, 0, _radius);
        graphics.endFill();
        
        addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
 
        // 押したボタンが離された時にonMouseUp()を呼び出す
        addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

        // 半径の大きさをパブリックな変数に保存しておく
        //パブリック=保持する変数? ほかから参照できる変数?
        //パブリックはほかから参照できる変数
        radius = _radius
        sp=_sp
    }
    // 1フレーム分の動き
    public function move():void {
        if( drag == false ){ //ドラッグしてないときだけ動かす。
            var rd : Number;
            
            x += vx;
            y += vy;
            rd = Math.atan2(y-stage.mouseY,stage.mouseX-x);
             
            vx +=-Math.cos(rd)*sp;
            vy += Math.sin(rd)*sp;
            vx *= 0.99;
            vy *= 0.99;
            
            if (x+radius < 0  ) x=465+radius ;
            if (x-radius > 465) x=-radius ;
            if (y+radius < 0  ) y=465+radius ;
            if (y-radius > 465) y=-radius ;  
        }
    }
    //こことしたの二行です
    private function onMouseDown(e:MouseEvent):void{
        startDrag();
        drag = true; //drag中に自分で動かないようにする
    }   
 
    private function onMouseUp(e:MouseEvent):void{
        stopDrag();
        drag = false; //dragが終わったので自分で動くようにする。
    }
 
}