2012-01-21 12 views
0

私は構築中のこのHTML5ゲーム内でPhonegap plugin SoundPlug to manage my audioを使用していますが、サウンドを再生する方法はありますが、サウンドを停止する方法はありません。 play関数は、PhoneGap.exec( "SoundPlug.play"、 "sound.wav")を使用してアプリケーションのJavaScriptから呼び出されます。関連するコードは次のようになります。このPhonegapプラグインにiOS AudioServicesの停止機能を書き込む方法は?

- (void) play:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
    NSBundle * mainBundle = [NSBundle mainBundle]; 
    NSMutableArray *directoryParts = [NSMutableArray arrayWithArray:[(NSString*)[arguments objectAtIndex:0] componentsSeparatedByString:@"/"]]; 
    NSString  *filename  = [directoryParts lastObject]; 
    [directoryParts removeLastObject]; 

    NSMutableArray *filenameParts = [NSMutableArray arrayWithArray:[filename componentsSeparatedByString:@"."]]; 
    NSString *directoryStr = [directoryParts componentsJoinedByString:@"/"]; 

    NSString *filePath = [mainBundle pathForResource:(NSString*)[filenameParts objectAtIndex:0] 
               ofType:(NSString*)[filenameParts objectAtIndex:1] 
             inDirectory:directoryStr]; 

    SystemSoundID soundID; 
    NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 

    AudioServicesCreateSystemSoundID((CFURLRef)fileURL, &soundID); 
    AudioServicesPlaySystemSound(soundID); 
} 

私は残念ながらのObj-Cについて何も知らないので、私はこのために、適切な停止機能を記述する方法がわかりませんよ。 (私が処理しようとしている正確な状況は、実行中のすべてのサウンドをミュートしたいときです。)

答えて

0

停止する必要がある場合は、AudioServicesPlaySystemSoundを使用しないでください。 phonegapにAVAudioPlayerへのブリッジがある場合、それはおそらく、サウンドの開始と停止に使用するより適切なAPIです。

AudioServicesPlaySystemSound()で使用されるsoundID変数をどこか(インスタンス変数、グローバル変数、またはwebview-javascript-landなどに戻して)保存すると、 AudioServicesDisposeSystemSoundID(soundID)は、そのsoundIDによって生成されるシステムサウンドを停止させることがあります。

関連する問題