0

私が作成したプレーヤーが何人かいるとしましょう。そして、それらのそれぞれについて、アクションの異なるセットをアクティブ化する必要があるとしましょう。

プレーヤーごとに異なる動作をするために、どのプレーヤーが終了したか(ケースセンテンスの実装自体)をどのように見つけることができますか?

例:シングルプレイヤーを処理するには、次のonCompletion()ようなメソッドを実装するだけです。

public void onCompletion(MediaPlayer mp){
    //DO SOMETHING HERE THAT FITS FOR ALL KINDS OF PLAYER'S TYPE OBJECTS
}

ケースセンテンスを追加して、いくつかの異なるプレーヤーオブジェクトを処理するように拡張するにはどうすればよいですか?

ありがとう !

4

2 に答える 2

4

このMediaPlayerメソッドに渡される属性は、MediaPlayer完了したばかりのものと同じであるため、各メディア プレーヤーへのポインターを (グローバル変数などを介して) 保持している限り、受信したメディア プレーヤーを確認するだけで済みます。 :

public class MyClass implements OnClompleteListener 
{
    MediaPlayer player1, player2, player3;
    //initialize them
    player1.setOnCompleteListener(this);
    player2.setOnCompleteListener(this);
    player3.setOnCompleteListener(this);

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        if (mp == player1)
        {
            //TODO handle player 1 completion
        }
        else if (mp == player2)
        {
            //TODO handle player 2 completion
        }
        else if (mp == player3)
        {
            //TODO handle player 3 completion
        }
    }
}

を実装せずに、これをインラインで処理することもできますOnCompleteListener

player1.setOnCompleteListener(new OnCompleteListener() {

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        //mp IS ALWAYS EQUAL TO player1!
    }
});
于 2012-10-29T20:09:18.300 に答える
0

拡張するクラスを作成し、MediaPlayerそれに数字のような属性を与えて、どのプレイヤーが誰であるかを追跡することができます。次に、メソッドでプレーヤーの番号を確認しますonCompletion()。それ以外の場合は、別の onCompletion リスナーを作成し、それらを別のプレーヤーに設定できます。

于 2012-10-29T19:59:34.680 に答える