我怎样才能使一行代码运行一次



当我的表单打开时,它运行一首歌。当我进入选项框架并回到主框架时,它会重新运行代码。现在我做了一个while循环,运行正常但问题是我应该在哪里声明初始值?如果我在windowOpened上声明,它总是重置为0,因此总是再次进行循环。

我在openedWindow事件中的代码

int sound = 0;          
while (sound < 1) {
    try 
    {
        InputStream test = getClass().getClassLoader().getResourceAsStream("musics/menu.wav");
        AudioStream Audio = new AudioStream(test);   
        AudioPlayer.player.start(Audio); 
    } 
    catch (Exception e){}
    sound = sound + 1;
}
} 

InputStream和AudioStream应该是某个对象的实例变量。如果它们驻留在函数openedWindow中,则在函数运行结束后它们将成为垃圾收集器。

相反,您应该在需要访问它们的类中实例化它们,可能在构造函数方法中。

同样,将声音变量也设置为类的实例变量。这样它就不会在每次调用openedWindow时被重置。

或者使用布尔标志变量来指示声音是否已经播放:

class MyWindowListener implements WindowListener {
    boolean soundPlayed = false;
    ...
    public void windowOpened(WindowEvent e) {
        if (!soundPlayed) {
            // play the sound
            soundPlayed = true;
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新