forked from: クラスのマウスイベント(?)
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
archived:2017-03-20 11:13:30
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が終わったので自分で動くようにする。
}
}