[wonderfl本] 練習問題1、円が画面の外に出ないようにする

by ongaeshi forked from 円を動かす (diff: 12)
♥0 | Line 41 | Modified 2010-01-04 16:34:36 | MIT License
play

ActionScript3 source code

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

// forked from 9re's 円を動かす
package {
    import flash.display.*;
    import flash.events.Event;
 
    [SWF(frameRate="60", width="465", height="465")]
    public class MyFirstAnimation extends Sprite { 
        private var _circle:Circle;
 
        public function MyFirstAnimation() {
            // クラスCircleのインスタンスを作る
            _circle = new Circle(15, 0xFFCF54);
            _circle.alpha = 1.0;
            _circle.vx = 3;
            _circle.vy = 4;
            
            // 最初の位置をwonderflの画面の中央にセット
            _circle.x = 465 / 2;
            _circle.y = 465 / 2;
            
            // 表示リストに追加
            addChild(_circle);
 
            // 1フレーム毎に実行する処理にenterFrameHandlerを追加する
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
 
        // フレーム毎に行われる処理 [25行目で登録される]
        private function enterFrameHandler(e:Event):void {
            // 1フレーム分動かす
            _circle.move();
        }
    }
}
 
import flash.display.Sprite;

class Circle extends Sprite {
    public var vx:Number;
    public var vy:Number;
    public var radius:Number;
    // コンストラクタ
    public function Circle(_radius:Number, _fillColor:uint = 0x000000) {
        // 塗り_fillColor, 半径_radiusの円
        graphics.beginFill(_fillColor);
        graphics.drawCircle(0, 0, _radius);
        graphics.endFill();
        // 半径の大きさをパブリックな変数に保存しておく
        radius = _radius
    }
    // 1フレーム分の動き
    public function move():void {
        x += vx;

        if (x - radius < 0 || x + radius > 465)
          vx *= -1.0;
          
        y += vy;

        if (y - radius < 0 || y + radius > 465)
          vy *= -1.0;
    }
}