Java me J2ME Manager.CreatePlayer()在第一次使用时将应用程序冻结一秒钟

Java me J2ME Manager.CreatePlayer()在第一次使用时将应用程序冻结一秒钟,java-me,Java Me,当我第一次调用Manager.CreatePlayer时,它会在瞬间冻结我的应用程序,这对我来说是一个问题,因为我正在编写一个游戏,而且很明显,我能做些什么来修复它?据我所知,游戏的常见逻辑是: 显示加载屏幕 以下是所有繁重的操作都已准备好/预加载并缓存,以便以后游戏可以顺利运行。 这里通常调用的方法是Manager.createPlayer和Player.prefetch。 所有的图像和声音都是先准备好的,可以在游戏开始时快速使用 开始游戏循环 由于资源已经准备好/预加载,现在您可以在此处使用

当我第一次调用Manager.CreatePlayer时,它会在瞬间冻结我的应用程序,这对我来说是一个问题,因为我正在编写一个游戏,而且很明显,我能做些什么来修复它?

据我所知,游戏的常见逻辑是:

显示加载屏幕

以下是所有繁重的操作都已准备好/预加载并缓存,以便以后游戏可以顺利运行。 这里通常调用的方法是Manager.createPlayer和Player.prefetch。 所有的图像和声音都是先准备好的,可以在游戏开始时快速使用

开始游戏循环

由于资源已经准备好/预加载,现在您可以在此处使用绘制/播放它们。 使用从加载屏幕创建和预取的播放器实例。 您可以在此处调用Player.start方法来播放声音

您可以阅读有关玩家状态的信息,尤其是关于预回迁的信息


请注意,可以多次重用播放器实例和调用start方法来播放相同的声音。无需再次调用createPlayer。

这可能是因为文件正在加载。在这种情况下,解决方法很简单:只需在自己的线程中处理播放器例程。但是,如果我有两个不同的声音,当不同的动作发生时,应该播放这些声音,那么我如何用所有这些声音预取播放器,我应该使用多个播放器吗?或者我应该使用每个音乐文件预回迁创建每个播放器,然后当动作occours使用正确的音乐文件重新创建该播放器并播放时,它会起作用吗?在游戏开始时重新创建播放器是一个坏主意createPlayer是一个繁重的过程。更好的方法是在加载屏幕阶段创建多个播放器,为一种声音创建一个播放器实例,不要忘记预取它们,除非不是所有设备都支持创建多个播放器对象。我已经对Player对象进行了广泛的测试,在我所有的测试设备上运行的唯一方法是完全停止、取消分配和清空播放器,然后用新声音创建一个新的播放器。试图重新使用现有播放器对象导致某些设备崩溃。我的建议是:创建一个处理音频的类。让该类的stop方法完全杀死玩家,然后该类的startfilename方法创建所有内容。