2013-10-05 5 views
1

freeTTS를 사용하여 백그라운드에서 텍스트를 말하고 있습니다. 애니메이션 GIF가 계속 재생되기를 원합니다. 제가 시도 할 때 : 음성이 시작되면 바로 백그라운드의 이미지는 다른 JFrame에 보관하더라도 교수형 당합니다 ... 그리고 연설이 끝나면 움직이기 시작합니다. 나는 그것이 멈추지 않고 올바르게 달리고 싶다. 애니메이션 GIF를 응용 프로그램으로 가져 와서 아이콘을 레이블 속성에서 해당 이미지로 변경하여 레이블에 배치합니다. 여기에 편집 freeTTS 보이스를 사용할 때 gif를 재생할 수 없습니다. - Java

내 코드입니다 : 나는 실제로는, setVisible,의 setText, 정수의 선언을 많이 사용하고

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

, 그들에 계산하지만 난 당신의 코드를 단순화하기 위해 그들을 제거했습니다 알다. 여전히 실행되면 동일한 문제가 발생합니다. 이것은 그냥

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"); 

답변

0

당신은이 두 가지가 동시에 작동 할 수 있도록 Threads and Concurrency

에 대한 몇 가지 연구를 수행 할 수 있습니다 :

버튼 'RandomjB'는 다음과 같은 코드로 다른 버튼에서 클릭 내 가정.

당신은 코드없이 말할 어려운이

FreeTTSClass tts; 

new Thread(new Runnable(){ 
    public void run(){ 
     tts = new FreeTTSClass(); 
    } 
}).start(); 
+0

내가 제안한 링크로 갔지만 제대로 가져 오지 못해 코드를 사용하는 방법을 이해할 수 없었기 때문에 그다지 도움이되지 못했습니다. –

+0

답변을 편집했습니다. –

+0

나는 이것을 위해 어떤 클래스도 시작하지 않았다. 코드에 버튼을 넣었을 뿐이었다. 나는 14 세이며 java에 처음이다. 네가 대답 한 것에 대해 나는 모른다. 만약 내가 버튼의 코드를 업로드 할 수 있습니다. Pls Help –

0

그런 짓을 할 수있는 FreeTTS에 대한 클래스의 어떤 종류의 인스턴스를 가정하면, 나는 그러나 가정 그 내에서 루프 음성 합성 오직 하나의 스윙 - 스레드만을 가지고 있으며 따라서 스피치 루프가 진행되는 동안 모든 종류의 윈도우 업데이트를 차단합니다.

Shaun Wild에서 설명한대로 : 음성 루프에 두 번째 스레드를 사용해야합니다.

+0

코드를 게시 하시겠습니까? 그렇다면 모두 당신이 필요합니까 –