forked from: クラスのマウスイベント(?)

by shohei909
104行目でエラーが起きるのはなぜでしょうか
クラスで作ったものをドラッグできるようにしたいのです

MouseEventを使うにはimportが必要です。

なにをimportすればいいかはここを参考にするといいですよ。
http://livedocs.adobe.com/flex/3_jp/langref/class-summary.html

MouseEventクラス は flash.eventsパッケージに含まれているので、
flash.eventsをインポートします。
♥0 | Line 75 | Modified 2010-09-28 23:51:48 | MIT License
play

ActionScript3 source code

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

// forked from wass's クラスのマウスイベント(?)
//104行目でエラーが起きるのはなぜでしょうか
//クラスで作ったものをドラッグできるようにしたいのです

/*
MouseEventを使うにはimportが必要です。

なにをimportすればいいかはここを参考にするといいですよ。
http://livedocs.adobe.com/flex/3_jp/langref/class-summary.html

MouseEventクラス は flash.eventsパッケージに含まれているので、
flash.eventsをインポートします。
*/

package {
    import flash.display.*;
    import flash.events.Event;
    import flash.text.*; 
    [SWF(frameRate="30", width="465", height="465")]
    public class MyFirstAnimation extends Sprite { 
        private var _rcle:Circle;
        private var _gcle:Circle;
        private var _bcle:Circle;
        public function MyFirstAnimation() {
            // クラスCircleのインスタンスを作る
            _rcle = new Circle(20,0xff0000,8);
            // 半透明(不透明度25%)
            _rcle.alpha = 0.25;
            
            // 最初の位置をwonderflの画面の中央にセット
            _rcle.x = 465 / 2;
            _rcle.y = 465 / 2;
            
            // 表示リストに追加
            addChild(_rcle);
            
            _gcle = new Circle(10,0x00ff00,4);
            // 半透明(不透明度25%)
            _gcle.alpha = 0.25;
            
            // 最初の位置をwonderflの画面の隅にセット
            _gcle.x = 0;
            _gcle.y = 0;
            
            // 表示リストに追加
            addChild(_gcle);
            
            _bcle = new Circle(30,0x0000ff,12);
            // 半透明(不透明度25%)
            _bcle.alpha = 0.25;
            
            // 最初の位置をwonderflの画面の隅にセット
            _bcle.x = 0;
            _bcle.y = 0;
            
            // 表示リストに追加
            addChild(_bcle);
                         
            // 1フレーム毎に実行する処理にenterFrameHandlerを追加する
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
 
        // フレーム毎に行われる処理 [25行目で登録される]
        private function enterFrameHandler(e:Event):void {
            // 1フレーム分動かす
            _rcle.move();
            _gcle.move();
            _bcle.move();
        }
    }
}
 
import flash.display.Sprite;
import flash.events.MouseEvent;  //MouseEventをインポートします。この1行がなかったのがエラーの原因です

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;
            
            if (x-radius < 0  ) x=    radius ;
            if (x+radius > 465) x=465-radius ;
            if (y-radius < 0  ) y=    radius ;
            if (y+radius > 465) y=465-radius ;  
        }
    }
    //こことしたの二行です
    private function onMouseDown(e:MouseEvent):void{
        startDrag();
        drag = true; //drag中に自分で動かないようにする
    }   
 
    private function onMouseUp(e:MouseEvent):void{
        stopDrag();
        drag = false; //dragが終わったので自分で動くようにする。
    }
 
}

Forked