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 回答