2015/09/07

Androidのsleep

ゲームのアプリを作る時には、アニメーションさせることが多々あります。
例えば、 / → | → \ → | → / を連続的に表示させると
棒が回転しているように見えます。
これが、アニメーションの基本です。

こんなことはご存知だと思いますが、ただ単にアニメーションさせると
早すぎて回転しているように見えず、縦棒(|)だけが見えるかもしれません。
縦棒が他のものに比べて表示が多いため、そのようにみえる可能性があります。

これを防ぐために、100ms(0.1秒)とか200ms(0.2秒)の間、処理を停止させると
綺麗に棒が回転しているようにみえるのですが、
処理を停止させるためにsleep命令を使用します。

ただし、AndroidのSleep命令では、処理停止中に割り込み処理が発生した場合に
sleep命令から例外が発生してしまうため、try{} によりsleepを囲む必要があります。

    try
    {
        Thread.sleep(100);
    }
    catch (Exception ex)
    {
    }

ただ、毎回毎回これを書くのは面倒ですから、関数化しておいたほうが楽になります

    public static void Sleep(int msec)
    {
        try
        {
            Thread.sleep(msec);
        }
        catch (Exception ex)
        {
        }
    }

こうしておけば、呼び出しも楽になります。
こういう小さいことでも関数化しておくと後で役に立つことがあります。
今回のiReversiでも、挟まれた石の反転を行う際など、様々な場面でSleep()として呼び出しています。

0 件のコメント:

コメントを投稿