lang

動作モード

Tonyu2には「待機可能モード」と「待機不能モード」という2つの動作モードがあります.

待機可能モード

待機可能モードで動作している間は,updateなどの,途中で動作を中断する(つまり,プログラムの動作を待機状態にする)メソッド(これを「待機系メソッド」と呼びます)が呼ばれたときに,一旦処理を中断し,描画や入力状態の更新などの処理を行います.

あるメソッドが待機可能モードで動作する条件として,次のものがあります。

待機不能モード

上で述べた条件にあてはまらない場合,「待機不能モード」で動作します. 待機不能モードでは,待機系メソッドが呼ばれても,途中で動作を中断しません.例えば,待機不能モード中にupdateメソッドが呼ばれても,待機動作を行いません.

待機不能メソッド

待機可能モードでは,待機不能モードより動作が遅くなることがあります.そこで,待機系メソッドが呼び出されないことが明らかな場合,必ず待機不能モードで動作したほうが効率がよくなります.このようなメソッドを「待機不能メソッド」と呼びます.

待機不能メソッドは,メソッドの定義の先頭にnowaitキーワードを追加して定義します.

nowait \myNoWaitMethod(arg1,arg2) {

}

現在の動作が待機可能モードか待機不能モードかを判別する

待機可能モード時は_threadという変数に現在のスレッドが格納されています。待機不能モード時はこの値はnullです。

method1(); //待機可能モードで動作 a=method1(); //待機可能モードで動作 a=10+method1(); //待機不能モードで動作 other.method1(); //待機不能モードで動作 method2(); //待機不能モードで動作

\method1() { for (i=0 ; i<20 ; i++) { x++; if (_thread) { /*待機可能モード時はここが実行される*/ } else { /*待機不能モード時はここが実行される*/ } update(); // 待機可能モードなら,ここで待機する } return x; } nowait \method2() { for (i=0 ; i<20 ; i++) { x--; update(); // ここでは待機しない } }

待機系メソッド一覧

.