アニメーションの速度を変える

さて、単にアニメーションを表示させるだけならiαppliを用いずともアニメーションGIFを使えば良いです。

このままだと、このサンプルの意義が否定されそうなのでボタンを押したらアニメーションの速度が変わるようにしてみました。ImageSample04a.javaを作ります。

本質的な変更はImageCanvasの方にだけあるので、そちらを見ていきます。

タイマイベントが渡される度に毎回処理を行なうのではなくて、何回かにいっぺん処理を行なうようにして、その「何回」の部分を変えれば速度が変えられるでしょう。

その「何回」というのを変数intervalに保持させます。この変数の値をボタンが押される度に変化させます。またタイマイベントが何回起きたかをtimerに保持させることにしました。

変更するのはprocessEventで、まずは

if (type == Display.TIMER_EXPIRED_EVENT) {
    timer++;
    if (timer >= interval) {
        count++;
        if (count >= N_IMAGES) {
            count = 0;
        }
        repaint();
        timer = 0;
    }
}

とタイマイベントがきたらtimerの値を増やします。それでtimerintervalを越えたら、処理を行なってtimer0に戻します。

あとはボタンが押されたらintervalの値を変えるようにすれば良いです。

} else if (type == Display.KEY_PRESSED_EVENT) {
    switch (param) {
    case Display.KEY_UP :
        interval--;
        if (interval < MIN_INTERVAL) interval = MIN_INTERVAL;
        break;
    case Display.KEY_DOWN :
        interval++;
        if (interval > MAX_INTERVAL) interval = MAX_INTERVAL;
        break;
    default :
        break;
    }
}

上ボタンが押されたら速度を上げるためにintervalを小さくし、下ボタンが押されたら速度を下げるためにintervalを大きくします。

狙い通りに動くかやってみましょう。

D:\iAppli>ijavac ImageSample04a.java
D:\iAppli>iprev ImageSample04a ImageCanvas
D:\iAppli>cd output
D:\iAppli\output>jar cvMf image04a.jar ImageSample04a.class ImageCanvas.class images

ImageSample04a.class を追加中です。(入 = 544) (出 = 355)(34% 収縮されました)
ImageCanvas.class を追加中です。(入 = 2284) (出 = 1216)(46% 収縮されました)
images/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
images/01.gif を追加中です。(入 = 776) (出 = 671)(13% 収縮されました)
images/02.gif を追加中です。(入 = 785) (出 = 681)(13% 収縮されました)

ADFはimage04a.jamです。

ダウンロード用HTMLはhttp://www.segi.org/i/j/t/にあるので、iαppl対応携帯をお持ちの方はお試し下さい。

狙い通りに動いてるようです。


前の項目へ
「iαppliであそぼう!」のページへ
せぎてつ伝言板
このページの感想をどうぞ!
お名前(匿名OK):

メールアドレス:
Valid CSS! 最終更新日 : 2000年2月12日(月)
tetsu@segi.org