今作っているゲームで、ユーザーが敵キャラを倒した数に合わせて、敵キャラの出現間隔を変えたくてTimerイベントを使っていました。
ところが、間隔を変えているつもりが全く変わらなくて困っていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
var enemyInterval:uint =3000; var enemyIntervalTimer:Timer = new Timer(enemyInterval); enemyIntervalTimer.addEventListener(TimerEvent.TIMER, incom); function incom(evt:TimerEvent):void{ //出現させる処理 } enemyIntervalTimer.start(); function checkGame( ){ switch(true){ case (10 <= hitEnemy && hitEnemy <20): enemyInterval =2000; trace("level2"); break; case (20 <= hitEnemy && hitEnemy <50): enemyInterval =1000; trace("level3"); break; default: trace("level1"); break; } } |
最初は、こんな感じにしたり、、、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
var enemyInterval:uint =3000; var enemyIntervalTimer:Timer = new Timer(enemyInterval); enemyIntervalTimer.addEventListener(TimerEvent.TIMER, incom); function incom(evt:TimerEvent):void{ //出現させる処理 } enemyIntervalTimer.start(); function checkGame( ){ switch(true){ case (10 <= hitEnemy && hitEnemy <20): enemyIntervalTimer =new Timer(2000); trace("level2"); break; case (20 <= hitEnemy && hitEnemy <50): enemyIntervalTimer =new Timer(1000); trace("level3"); break; default: trace("level1"); break; } } |
こんな感じにしたりしてました。
そこでググったところ、人力検索はてなのQ&Aに載ってました。delayなんてプロパティがあるのを初めて知りました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
var enemyInterval:uint =3000; var enemyIntervalTimer:Timer = new Timer(enemyInterval); enemyIntervalTimer.addEventListener(TimerEvent.TIMER, incom); function incom(evt:TimerEvent):void{ //出現させる処理 } enemyIntervalTimer.start(); function checkGame( ){ switch(true){ case (10 <= hitEnemy && hitEnemy <20): enemyIntervalTimer.delay =2000; trace("level2"); break; case (20 <= hitEnemy && hitEnemy <50): enemyIntervalTimer.delay =1000; trace("level3"); break; default: trace("level1"); break; } } |
delayをTimerオブジェクトに設定しすると、、、
タイマーのインターバルが変更でき、敵の出現間隔がバッチリ変わるようになりました!
こちらが完成したゲームです!