因此,基本上,我正在SurfaceView上创建游戏,并且在主CustomView上具有以下类:

私有TitleScreen titleScreen;私有GameScreen游戏屏幕;私有PauseScreen暂停屏幕;私有GameOverScreen gameOverScreen;


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

更新(已解决):

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

公共类SoundPlayerInstance {私有静态SoundPlayer soundPlayerInstance;私有SoundPlayerInstance(){}公共静态无效createInstance(Context上下文){soundPlayerInstance = new SoundPlayer(context); }公共静态SoundPlayer getInstance(){返回soundPlayerInstance; }}


在我的主视图上,在执行任何操作之前,我在构造函数中将此称为:

SoundPlayerInstance.createInstance();

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

SoundPlayerInstance.getInstance().playSound();

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

最佳答案

实际上,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()

08-05 21:17