2010-11-18 6 views
4

Ich habe eine App, ich arbeite an und es verwendet einige der Hardware-Sensoren, um Daten auf dem Bildschirm zu liefern, gibt es ein Label, das mit der Nummer aktualisiert. Ich möchte, dass ein Sound abgespielt wird, wenn die Zahl über 100 oder etwas liegt. Sagen wir zum Beispiel, dass es Zahlen liest und plötzlich einen guten Platz (oder was auch immer) findet, dann möchte ich, dass ein Ton spielt oder ein Licht aufleuchtet. Ich bin ein absoluter Anfänger und es wäre schön, wenn die Antwort für einen absoluten Anfänger leicht zu verstehen wäre.Wie man einen Sound in Objektiv C iPhone-Codierung

Antwort

10

Ich bin mit dem System AudioToolbox.framework für Geräusche in meinem einfachen Spiel zu spielen. Ich habe diese statische Funktion zu gemeinsamer MyGame Klasse:

+ (SystemSoundID) createSoundID: (NSString*)name 
{ 
    NSString *path = [NSString stringWithFormat: @"%@/%@", 
        [[NSBundle mainBundle] resourcePath], name]; 


    NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO]; 
    SystemSoundID soundID; 
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID); 
    return soundID; 
} 

ich die „Morse.aiff“ Datei hinzugefügt Ressourcen zu projizieren und initialisiert es in (beliebigen) Klasseninitialisierung mit dem folgenden:

self.mySound = [MyGame createSoundID: @"Morse.aiff"]; 

Und Dann habe ich Ton mit diesem Anruf gespielt:

AudioServicesPlaySystemSound(mySound); 

Vergessen Sie auch nicht, AudioServices.h-Datei zu importieren.

Diese Audio-Toolbox kann auch verschiedene Klangformate wiedergeben.

+0

Denken Sie daran, dass Sie AudioServicesDisposeSystemSoundID aufrufen müssen, um Speicherverlust zu vermeiden! (da SystemSoundID von einem Framework der unteren Ebene stammt) –

1

Überprüfen Sie die Dokumentation für die AVAudioPlayer Klasse. Sie können Soundsclips abspielen. Wenn Sie Probleme bei der Implementierung haben, zeigen Sie uns etwas Code.

+0

ok danke finden kann ich an, dass aussehen wird, showi ng wird der nächste sein, ich weiß, das ist dumm, aber was willst du speziell? – DanielsCaleb0

1

Wenn die Sounds bis zu 5 Sekunden dauern und keine Stereoausgabe benötigt wird, würde ich Ihnen empfehlen, dies mit Systemsounds zu tun. Es ist einfach und bessere Lösung als alle anderen. Apple-Beispielcode wird unter dem Namen versehen SysSound

EDIT1 Oder vielleicht könnte Tutorial helfen, mehr http://howtomakeiphoneapps.com/2009/08/how-to-play-a-short-sound-in-iphone-code/

+0

das ist großartig, def. hilft. Irgendeine Idee, wie es funktioniert, wenn es eine bestimmte Anzahl überschreitet? – DanielsCaleb0

+1

ohne Code zu sehen, ist es nicht einfach zu sagen, wie, aber lassen Sie uns raten, Ihre Zahl ist Integer, sollte es in Ihrem Code If-Anweisung sein, die Werte vergleicht (legen Sie es wo Sie die Werte zuweisen) und dann direkt unter der if-Anweisung Platziere deinen Systemsound und es wird gespielt – Vanya

+0

Das erklärt die verschiedenen Spieler und wann man sie benutzt: http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html – griotspeak

4

h

#import <AVFoundation/AVFoundation.h> 

@interface CMAVSound : NSObject { 
    AVAudioPlayer *audioPlayer; 
} 

- (id)initWithPath:(NSString*)fileNameWithExctension; 
- (void)play; 

@end 

m

#import "CMAVSound.h" 

@implementation CMAVSound 

-(void)dealloc { 
    [audioPlayer release]; 
} 

- (id)initWithPath:(NSString*)fileNameWithExctension { 
    if ((self = [super init])) { 
     NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], fileNameWithExctension]]; 

     NSError *error; 
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 

     if (audioPlayer == nil) { 
      NSLog(@"%@", [error description]); 
     } 
    } 
    return self; 
} 

- (void)play { 
    [audioPlayer play]; 
} 

@end 
Verwandte Themen