▼ActionScript 2.0メモ▼
定期イベントの処理


定期イベントの処理を行うFlashを作成する。



定期イベント
定期イベントを発生させる命令は次の3つ。
setInterval()メソッド 数ミリ秒おきに定期イベントを発生させる。
キャンセルはclearInterval()
setTimeout()メソッド 数ミリ秒後にイベントを発生させる。
発生したイベントで再度setTimeout()を呼ぶことで定期イベントを行う。
キャンセルはclearTimeout()
MovieClipのonEnterFrameイベントハンドラ ムービークリップのタイムラインで1フレーム進むたびに呼ばれる


素材の準備

SWF1つを準備する。swfmillを使ってSWFに埋め込む
sample.swf

キャラクターの中央を原点として指定している。


サンプルプログラムのイメージ
以下のサンプルプログラムでは、イメージとなるMovieClipに次のメソッドを追加している。
また、インスタンス名は自動生成している。
setXY(x:Number,y:Number) XY座標の指定


ソースコード
IntervalEx.as
//定期イベントの処理
class IntervalEx extends MovieClip {
    private var image:MovieClip;//イメージ
    private var vx:Number=2;    //X速度
    private var vy:Number=2;    //Y速度

    //コンストラクタ
    public function IntervalEx() {  
        //リソースの追加
        image=addImage(this,"sample");
        image.setXY(120,120);
        
        //定期イベントの開始
        setInterval(this,"onTick", 50);
    }

    //定期イベントの処理
    private function onTick():Void {
        image._x+=vx;
        image._y+=vy;
        image._rotation=(image._rotation+5)%360;
        if (image._x<0 || Stage.width <image._x) vx=-vx;
        if (image._y<0 || Stage.height<image._y) vy=-vy;
    }

    //イメージの追加
    static function addImage(parent:MovieClip,
        id:String):MovieClip {

        //インスタンス名の自動生成
        if (parent.nameIdx==undefined) parent.nameIdx=0;
        var name:String="_name"+(parent.nameIdx++);

        //MovieClipの追加
        parent.attachMovie(id,name,parent.getNextHighestDepth());
        var mc:MovieClip=parent[name];

        //XY座標の指定
        mc.setXY=function(_x:Number,_y:Number) {
            this._x=_x;
            this._y=_y;
        }
        return mc;
    }
}

application.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<movie version="7" width="240" height="240" framerate="30">
    <background color="#ffffff"/>
    <clip import="classes.swf" />  
    <frame>
        <library>
            <!-- クラス -->
            <clip id="Application" class="IntervalEx" />

            <!-- リソース -->
            <clip id="sample" import="sample.swf" />
        </library>
        <place id="Application" name="app" x="0" y="0" depth="1000" />
    </frame>
</movie>


コンパイル
mtasc -version 7 -swf classes.swf -header 240:240:30 IntervalEx
swfmill simple application.xml IntervalEx.swf


−戻る−