gpt4 book ai didi

java - 声音和图像文件为空

转载 作者:行者123 更新时间:2023-12-01 04:49:06 24 4
gpt4 key购买 nike

我正在为类(class)编写游戏,但在添加声音和图像时遇到问题。我们从安德鲁·戴维森的《 killer 游戏编程》书中获得了可以使用的框架,我觉得我正在准确地复制它,但每当我尝试播放声音或显示图像时,我都会得到空值。

文件名读取正确,但找不到声音。我的文件中有mp3。我认为目录可能是错误的,所以我不断在/Sounds 和/src/Sounds 之间更改它,但这没有帮助。我完全陷入困境。

编辑:毕竟我刚刚发布了这些废话,这是在实例化之前传入 imsLoader 的一个简单问题。叹。我会检查 soundLoader 是否有同样的问题。谢谢大家。

编辑2:声音问题不一样。为我的声音文件创建新的输入文件流时,我得到空结果。

这是更改 URL 后的 SDL 方法。

   try {
java.net.URL inFile = this.getClass().getResource("/Sounds/SDLInfo.txt");
System.out.println("url " + inFile);
InputStreamReader in = new InputStreamReader(inFile.openStream());
if(in == null){
System.out.println("in is null wtf");
System.out.println("sndsFNm " + sndsFNm);
System.out.println("in contents " + this.getClass().getResourceAsStream(sndsFNm));
}
BufferedReader br = new BufferedReader(in);
StringTokenizer tokens;
String line, name, fnm;
while((line = br.readLine()) != null) {
if (line.length() == 0) // blank line
continue;
if (line.startsWith("//")) // comment
continue;

tokens = new StringTokenizer(line);
if (tokens.countTokens() != 2)
System.out.println("Wrong no. of arguments for " + line);
else {
name = tokens.nextToken();
fnm = tokens.nextToken();
load(name, fnm);
}
}
br.close();
}
catch (IOException e)
{ System.out.println("Error reading file: " + sndsFNm);
System.exit(1);
}

在我的主类中调用此方法之前,我实例化了 SDL 加载器,如下所示:

    private static final String SDL_FILE = "SDLInfo.txt";
private SDLLoader sdlLoader;
//initialize loaders and start music
sdlLoader = new SDLLoader(SDL_FILE);
sdlLoader.play("bgmusic", true);

堆栈跟踪

url file:/C:/Documents%20and%20Settings/MyName/Desktop/java%20programs/Zombie%20City/bin/Sounds/SDLInfo.txt
Problem with Sounds/peaceful_music.mp3
-- bgmusic/peaceful_music.mp3
Reading file: Sounds/clipsInfo.txt
url file:/C:/Documents%20and%20Settings/MyName/Desktop/java%20programs/Zombie%20City/bin/Sounds/SDLInfo.txt
Problem with Sounds/peaceful_music.mp3
-- bgmusic/peaceful_music.mp3

最佳答案

不要尝试输入流,而是使用

形成 URL
this.getClass().getResource("/Sounds/SDLInfo.txt"); // Note leading '/' - v. important.

我建议进行此更改的原因是我知道 getResource(..) 方法会将前导 / 解释为 < em>“从类路径的根搜索,而不是类的包”。

我从未确切地确定 getResourceAsStream(..) 如何处理前导 /,但它似乎..不同。

关于java - 声音和图像文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com