我之前发布了这个,但它并不完全符合stackoverflow标准。我清理了代码并更多地阐述了我的问题,所以这里有:
我正在一个CS1项目的小程序中制作一个两人小行星游戏。我试图找出如何使用我可以在特定时间调用的方法来实现声音效果。我发现这个教程(http://www.dreamincode.net/forums/topic/14083-incredibly-easy-way-to-play-sounds/)就是这么做的,但我在嵌套循环语法方面遇到了一些麻烦。
如何从另一个类(在我的例子中,AsteroidsGame.java)中构造Sound类中的'Sound'对象?
由于教程代码的混乱,这是我的提高可读性。
//Import Statements
import java.applet.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
public class Audioapp extends JApplet
{
public class Sound // Holds one audio file
{
private AudioClip song; // Sound player
private URL songPath; // Sound path
Sound(String filename)
{
try
{
songPath = new URL(getCodeBase(),filename); // Get the Sound URL
song = Applet.newAudioClip(songPath); // Load the Sound
}
catch(Exception e){} // Satisfy the catch
}
//Loops audio file
public void playSound()
{
song.loop();
}
//Stops audio file
public void stopSound()
{
song.stop();
}
//Plays audio file once
public void playSoundOnce()
{
song.play();
}
} //Closes Sound()
public void init()
{
Sound testsong = new Sound("song.mid");
testsong.playSound();
}
} //Closes Audioapp()
编辑1:刚刚记得最后一个帖子中有人建议我在编译/运行它时发布它的作用。这个.java自己什么都不做;但是当与我的项目的其余部分一起放置时,它确实编译时没有错误。
编辑2:非常感谢Zim-Zam的所有帮助,如果有人发现这个帖子并且遇到同样的问题,请查阅他的评论。
答案 0 :(得分:1)
我建议您将内部类更改为public static class Sound
- 这样您就可以构建类的实例而无需Audioapp
的实例。
然后,要创建Sound
的实例,您只需将其视为名称为Audioapp.Sound
,例如Audioapp.Sound sound = new Audioapp.Sound()
如果内部类不是静态的,那么您将使用Audioapp.Sound sound = audioApp.new Sound()
,其中audioapp
是Audioapp
的实例