1

我正在使用 Slick2D 库编写游戏。我最近添加了一个使用延迟加载的加载屏幕。我使用 Music 类来加载用作音乐的 OGG 文件。这些需要花费过多的时间来加载。我在 wiki 上查看了有关延迟加载的更多信息。我发现:

没有一个资源应该花费很长时间来加载它会使屏幕在很长一段时间内无法刷新(如果是这样,那么资源可能无论如何都应该被流式传输:))。

所以我改变了我的菜单类如下(这只是一个例子,我省略了很多):

public class MainMenu extends BasicGameState{
private Music[] theme = new Music[1];
public void init(GameContainer gameContainer, StateBasedGame stateBasedGame) throws SlickException{
    InputStream[] musicStream = {ResourceLoader.getResourceAsStream("/path/to/theme1.ogg")}
    try{
        theme[0] = new Music(musicStream[0],"path/to/theme1.ogg");
    }catch (Exception e){
        e.printStackTrace;
    }
}
(rest of class)

音乐数组是一个数组org.newdawn.slick.Music

所以我想我已经做了可以减少加载时间的事情。但是,在加载时,它花费了同样长的时间,但它没有将文件显示为当前资源,而是显示了流。

我想知道如何执行以下一项或两项操作:

  1. 正如 wiki 建议的那样,流式传输资源以减少加载时间。
  2. 仅加载选定的资源并在更改状态时加载更多(仅在进入游戏状态时加载游戏音乐等)。
4

1 回答 1

1

我无意中看到了答案。

public void init(GameContainer gc, StateBasedGame game) throws SlickException{
    try{
        theme[0] = new Music("path/to/theme1.ogg",true);
    }catch (Exception e){
        e.printStackTrace;
    }
}

在文件引用之后添加true表示您要流式传输音频。

于 2013-10-13T15:49:11.003 回答