0

目前我正在使用文本到语音应用程序,使用 FliteTTS 来开发它并且它​​工作正常。

Class FliteTTS 

 -(void)speakText
    {
        [audiplayer Play];
    }

    -(void)stopTalking
    {
        [audioPlayer stop];
        [audioPlayer release];
    }

Class B

 -(void)TouchToPlay
    {
        [self runFlite:ScriptDetails.text]; // Play audioplyer in FliteTTS
    }

   -(void)StopPlaying
   {
         FliteTTS *flit = [[FliteTTS alloc]init];
         [flit stopTalking];
   }

然后我试图将音频播放器从 B 类停止到 FliteTTS 类,但它没有停止,如何停止这个?请帮我。

提前致谢

4

2 回答 2

0

这里:

-(void)StopPlaying{
     FliteTTS *flit = [[FliteTTS alloc]init];
     [flit stopTalking]; }

您正在创建 FliteTTS 类的新实例,这不是正在播放音频的实例,因此不会使其停止,您可以尝试将 FliteTTS 类设置为单例,以便在整个项目中返回一个实例,这将使您可以从任何您想要的类中播放/停止或执行任何其他控制操作。

于 2012-11-08T10:09:17.697 回答
0

audiplayer每次创建 class 的新实例时都会初始化该对象FliteTTS,因此您必须设置为audiplayer静态并使用单例来提供对audiplayer实例的访问。

于 2012-11-08T10:20:15.437 回答