▼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