1

所以基本上,我在 SurfaceView 上创建一个游戏,我的主 CustomView 上有这些类:

私人标题屏幕标题屏幕;
私人游戏画面游戏画面;
私人 PauseScreen pauseScreen;
私人 GameOverScreen 游戏OverScreen;

这些类中的每一个都有一个draw(Canvas canvas)方法,并在用户转到另一个屏幕时调用。但问题是,我有一个SoundPlayer类,其中包含使用 SoundPool 的所有音效。它将用于所有这些类。实际上有没有一种方法可以让 SoundPlayer 只加载一次,然后在这些类中都可用?release()还是每次切换时都必须调用并调用构造函数?提前致谢。:D

更新(已解决):

所以这就是我所做的。我创建了我的 SoundPlayer 类的一个实例:

公共类 SoundPlayerInstance {
私有静态 SoundPlayer soundPlayerInstance;
private SoundPlayerInstance(){}

public static void createInstance(Context context){
soundPlayerInstance = new SoundPlayer(context);
}

public static SoundPlayer getInstance(){
return soundPlayerInstance;
}
}

在我的主要观点上,在我做任何事情之前,我在我的构造函数中调用它:

SoundPlayerInstance.createInstance();

然后,在我的任何课程上,我都可以调用它来播放声音:

SoundPlayerInstance.getInstance().playSound();

我认为这不仅对此类情况有用,而且对于想要实例化所有其他类中都可用的类的开发人员(如我)也很有用。感谢 system32 回答我的问题。:)

4

1 回答 1

1

实际上有没有一种方法可以让 SoundPlayer 只加载一次,然后在这些类中都可用?

这是可能的。使SoundPlayer类单例。

public class SoundPlayer
{

  private static SoundPlayer instance;

  private SoundPlayer()
  {
     // Do some stuff
  }

  public static SoundPlayer getInstance()
  {
     if(instance == null)
         instance = new SoundPlayer();

     return instance;
  }

}

要全局访问,只需调用SoundPlayer.getInstance()

于 2013-02-13T00:54:20.290 回答