みずたまふわふわ
たのしそうだったからforkした。
/**
* 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が終わったので自分で動くようにする。
}
}