0

サウンドはすべてセットアップされて正常に再生されていますが、からの値に応じてサウンドを変更したいと思いますNSString。これが私のコードです:

- (void) playSound {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef =CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"glass", CFSTR ("wav"), NULL);
UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}

@"glass"このように定義された、他の場所からの文字列の値になりたいNSString *sound = @"newSound";です。

4

3 に答える 3

0

どうですか:

- (void) playSound:(NSString *)soundFile {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef =CFBundleCopyResourceURL(mainBundle, (CFStringRef) soundFile, CFSTR ("wav"), NULL);
    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}

これを行うには多くの異なる方法があります。.wavと.mp3のどちらを開くかなどを制御したい場合は、渡されるsoundFile文字列の一部に「.wav」を含めることもできます。

于 2012-04-27T19:13:32.930 に答える
0

そのようにメソッドを定義することはできませんか?

- (void) playSound:(NSString *)soundName {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef =CFBundleCopyResourceURL(mainBundle, (CFStringRef) soundName, CFSTR ("wav"), NULL);
UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}

次に、それを呼び出して、次のようなさまざまなサウンドを再生します:-

[soundPlayer playSound:@ "glass"];

[soundPlayer playSound:@ "newSound"];

于 2012-04-27T19:15:58.247 に答える
0

私はそれをこのようにします:

これをヘッダーファイルに追加します。

typedef enum {
    GlassSound,
    NewSound,
} SoundEffect;

これを実装ブロックに追加します

- (void)playSound:(SoundEffect)soundEffect {
    NSString *sound = nil;
    switch (soundEffect) {
        case Glass:
            sound = @"glass.wav";
            break;
        case newSound:
            sound = @"newSound.wav";
            break;
        default:
            break;
    }

    if (sound != nil) {
        CFBundleRef mainBundle = CFBundleGetMainBundle();
        CFURLRef soundFileURLRef;
        soundFileURLRef =CFBundleCopyResourceURL(mainBundle, (CFStringRef) sound, NULL);
        UInt32 soundID;
        AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
        AudioServicesPlaySystemSound(soundID);
    }
}
于 2012-04-27T19:26:43.377 に答える