0

「オン」の位置を示すようにスイッチを押すと、実際に何かを行うにはどうすればよいですか。たとえば、プレーヤーの音量を 0 に設定するメソッドにリンクするにはどうすればよいですか? 私はそのインターフェースを推測していFieldChangeListenerますか?

私の実装はすべてMainScreenクラスで行われます。

Bitmap switch_left = Bitmap.getBitmapResource("switch_left.png");
Bitmap switch_right = Bitmap.getBitmapResource("switch_right.png");
Bitmap switch_left_focus = Bitmap.getBitmapResource("switch_left_focus.png");
Bitmap switch_right_focus = Bitmap.getBitmapResource("switch_right_focus.png");

LabeledSwitch silentSwitch = new LabeledSwitch(switch_left, switch_right, switch_left_focus, switch_right_focus, "on", "off", true );
JustifiedHorizontalFieldManager silent = new JustifiedHorizontalFieldManager( new LabelField( "Silent Mode" ), silentSwitch, false, USE_ALL_WIDTH );
silent.setPadding(5,5,5,5);
add(silent);

OpenGlSpriteDemo というゲーム デモをインポートし、フィールド変更リスナーを使用して開始ボタンを実装する方法を調べたので、Labeledswitch でそれを実行しようとしました。私は正しい方向に向かっていますか?

LabeledSwitch silentSwitch = new LabeledSwitch(switch_left, switch_right, switch_left_focus, switch_right_focus, "on", "off", false );
silentSwitch.setChangeListener(this);

public void fieldChanged(Field arg0, int arg1) 
{
    //If user sets the switch to on, reduce the volume to 0, 
    // else if user sets the switch to false, change it back 
    // to the default volume    
}

ここに画像の説明を入力

4

1 に答える 1

1

ブール値フラグを使用してサイレント状態かどうかを判断し、ボリューム変数の get および set メソッドを使用して次のように渡します。

volume.setLevel(getVolume());       

boolean isSilent = false;

public void fieldChanged(Field field, int context) 
{
    if(!isSilent && field == silentSwitch)
    {
        setVolume(0);
        isSilent = true;
    }
    else if(field == silentSwitch && isSilent)
    {
        setVolume(20);
        isSilent = false;           
    }
}
于 2012-09-22T19:07:49.863 に答える