1

我正在使用 freeTTS 说出一些文本,在后台我想要一个动画 gif 继续播放当我尝试这个时:一旦声音开始说话,即使我将它保存在其他一些 JFrame 中,背景中的图像也会被挂起。 ..演讲结束后,它开始移动。我希望它正常运行而不会停顿。我通过将动画 gif 导入到我的应用程序并将图标更改为标签属性中的图像来将动画 gif 放置在标签中。

编辑 这是我的代码:

 private void RandomjBActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Voice voice;
        voice = voiceManager.getVoice(VOICENAME);
        voice.allocate();
        voice.speak("Daksh"); 
    }               

我实际上使用了很多 setVisible、setText、整数声明、计算它们,但我删除了它们以简化代码以供您理解。如果执行它仍然会出现同样的问题。

通过以下代码从另一个按钮单击按钮“RandomjB”​​:

final Timer timer = new Timer(zad, new ActionListener() {
    int tick = 0;

    @Override
    public void actionPerformed(ActionEvent e) {
      System.out.println("Success" + ++tick);
              RandomjB.doClick();
              final int col = Integer.parseInt(t3.getText());;
      if (tick >= col) {
        ((Timer) e.getSource()).stop();
      for(int g=0; g<col; g++){
    jButton2.setVisible(true); // Check Button -> Visible

}
      }

    }
  });



  timer.setInitialDelay(0);
  System.out.format("About to schedule task.%n");
   timer.start(); 
  System.out.format("Task scheduled.%n");
4

2 回答 2

0

您可能想对线程和并发进行一些研究

这些允许两件事同时运行,这只是我的假设。

假设您为 FreeTTS 实例化某种类,您可能想要做这样的事情

FreeTTSClass tts;

new Thread(new Runnable(){
    public void run(){
        tts = new FreeTTSClass();
    }
}).start();
于 2013-10-05T18:34:59.660 回答
0

没有代码很难说,但是我假设您在一个且唯一的 Swing-Thread 中循环语音合成,因此只要语音循环正在进行,就会阻止所有类型的窗口更新。

正如 Shaun Wild 所说:您需要为语音循环使用第二个线程。

于 2013-10-05T18:38:13.157 回答