/** * SignCurve.as */ package { /** * import */ import flash.display.Sprite; import flash.events.Event; [SWF(width = "300", height = "150", backgroundColor = "#ffffff")] public class SignCurve extends Sprite { /** * @access private */ private var circle : Sprite = new Sprite(); private var line : Sprite = new Sprite(); private var rot : int = 0; private var rad : Number; private var sin : Number; /** * コンストラクタ * * あんまりここでごにょごにょするのはよろしくないけどサンプルだから気にしない! */ public function SignCurve () { // --- 背景描画 line.graphics.lineStyle(1, 0x666666, 0.5); line.graphics.beginFill(0x999999); line.graphics.moveTo(0, 75); line.graphics.lineTo(300, 75); line.graphics.endFill(); // --- 表示 addChild( line ); // --- 移動物体描画 circle.graphics.beginFill(0x333333); circle.graphics.drawCircle(0, 0, 5); circle.graphics.endFill(); // --- 初期値 circle.y = 75; // --- 表示 addChild( circle ); // --- イベントリスナーの登録 addEventListener(Event.ENTER_FRAME, CircleEnterFrameFunc); } /** * CiecleEnterFrameFunc * * 球体の移動とか。 * * @access private * @param event : Event * @return void */ private function CircleEnterFrameFunc ( event : Event ) : void { // --- 角度[単位:°] rot += 10; if ( rot > 360 ) rot = 0; // --- rad計算 rad = rot * Math.PI / 180; // --- sign計算 sin = Math.sin(rad); // --- 座標指定 circle.y = sin * 30 + 75; circle.x += 2; // --- 画面右端まで移動したら左端に戻す if ( circle.x > 300 ) circle.x = 0; } } }