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 クラスへの audioplayer を停止しようとしましたが、停止しませんでした。これを停止するにはどうすればよいですか? 私を助けてください。

前もって感謝します

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 に答える