上下に波打つ円
上下に波打つ円のサンプル@kamip
http://d.hatena.ne.jp/kamip/
♥0 |
Line 62 |
Modified 2009-09-10 16:09:38 |
MIT License
archived:2017-03-29 09:47:59
ActionScript3 source code
/**
* Copyright kamip ( http://wonderfl.net/user/kamip )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nNTx
*/
package {
//上下に波打つ円のサンプル@kamip
//http://d.hatena.ne.jp/kamip/
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import net.hires.debug.Stats;
[SWF(backgroundColor="0xffffff", width="465", height="465", frameRate="100")]
public class UpBall extends Sprite {
//stageの中心点
private var _center_x:Number = stage.stageWidth / 2;
private var _center_y:Number = stage.stageHeight / 2;
//周りを回ってる円のSprite
private var _moveCircle:Sprite = new Sprite();
private var _moveCircle_x:Number = 0;
private var _moveCircle_y:Number = 0;
//ブレ幅
private var _radius:Number = 0;
//ブレスピード
private var _degree:Number = 0;
//弧度
private var _radian:Number = 0;
//波打つ判定
private var _type:Boolean = true;
//波打つ方向
private var _right:Boolean = true;
public function UpBall() {
init();
}
private function init():void {
//とりあえずaddChild
this.addChild(_moveCircle);
//カッコイイやつを付ける
addChild(new Stats());
//周りを回ってる円のSprite(非動的なパラメーターはここで指定
_moveCircle.graphics.beginFill(0xff58e5, 1);
_moveCircle.graphics.drawCircle(0, 0, 5);
_moveCircle.graphics.endFill();
//毎フレームごとにイベントを発生させる
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
//毎フレームごとに発生するイベント
private function onEnterFrame(e:Event):void {
//円を描く計算式をy軸だけ取得する
_radian = Math.PI / 180 * _degree;
_moveCircle_y = _radius * Math.sin(_radian) + _center_y;
//取得したy座標に円を移動する
_moveCircle.y = _moveCircle_y;
//_degreeの数値を大きくすれば早く動く
if ( _type == true) {
_degree += 3;
}
//stageの端の折り返し処理
if ( _moveCircle.x == 460 ) {
_right = false;
}else if ( _moveCircle.x == 5 ) {
_right = true;
}
// ブレ幅をランダムで変更
if ( _moveCircle.y == _center_y ) {
_radius = getRandom();
}
//x軸の方向設定
if ( _right == true ) {
_moveCircle.x += 1;
}else {
_moveCircle.x -= 1;
}
}
//マウスでクリックされたら逆回転になる
private function onMouseDown(e:MouseEvent):void {
if ( _type == false ) {
_type = true;
}else {
_type = false;
}
}
//ランダムfunction
private function getRandom():int {
return Math.round( Math.random() * 250 + 1);
}
}
}