ダイナミックポリゴンによるパターンの切り替え
MascotCapsule V3 ではモデルデータ内に複数の状態を持つことができ、その状態を指定してモデルを描画することが可能です。
モデルの状態の指定には Figure.setPattern( int idx ) メソッドを使用します。
モデルデータがどれだけの状態を持っているかは、データ作成時に設定されます。この数は Figure.getNumPattern() メソッドを利用することで取得することができます。
モデルの状態はベースとなる共通セットを含めると最大で 33 個の状態があります。これを 32bit の各 bit とみなして(共通セットを 0 とします) Figure.setPattern() メソッドに指定します。
今回使用するサンプルの場合、共通セットを含め以下の 4 つの外見状態を持っています。
- Pattern 0 : 共通セットとなる顔
- Pattern 1 : 目のない顔
- Pattern 2 : 開いた目
- Pattern 3 : 閉じた目
そのため、
- Figure.setPattern( 0 ) で、共通セットとなる顔
- Figure.setPattern( ( 1 << 0 ) ) で、目のない顔
- Figure.setPattern( ( 1 << 1 ) ) で、開いた目を持つ顔
- Figure.setPattern( ( 1 << 2 ) ) で、閉じた目を持つ顔
といった描画がなされます。
sample_comdot_v3_dynamic 実行画面 (左から、Pattern 1, Pattern 2, Pattern 3 )
また、複数の独立した外見状態を持つモデルの場合、
Figure.setPattern ( ( ( 1 << 1 ) | ( 1 << 5 ) ) )
といった指定を行うと、同時に複数の箇所を動かすことも可能です。
サンプルではソフトキーを押すごとに外見状態が変化します。
private Figure figure; // モデルデータ
/* MascotCapsule 外見制御用ワークデータ */
private int pattern = 0; // 現在の外見状態
private int max_pattern = 0; // 外見状態総数
figure = new Figure( "cap_dynamic.mbac" );
/* 外見状態総数取得 */
max_pattern = figure.getNumPattern();
/* 外見状態設定 */
if ( pattern >= max_pattern ) {
figure.setPattern( ( 1 << pattern ) );
/* 外見状態変更 */
public void commandAction( Command c, Displayable d ) {
/* MascotCapsule 外見制御用ワークデータ */
private int pattern = 0; // 現在の外見状態
private int max_pattern = 0; // 外見状態総数
figure = new Figure( "cap_dynamic.mbac" );
/* 外見状態総数取得 */
max_pattern = figure.getNumPattern();
/* 外見状態設定 */
if ( pattern >= max_pattern ) {
/* 外見状態総数を超えていたら初期化 */
pattern -= max_pattern;
}pattern -= max_pattern;
figure.setPattern( ( 1 << pattern ) );
/* 外見状態変更 */
public void commandAction( Command c, Displayable d ) {
String label = c.getLabel();
/* 外見状態変更 */
if( label.equals( commandLabel ) ) {
}
}/* 外見状態変更 */
if( label.equals( commandLabel ) ) {
/* 外見状態を表すパラメータをインクリメント */
pattern++;
pattern++;
}

