2013-06-02 14 views
9

Ich kann nicht herausfinden, wie man eine Musikdatei in einem iPhone-Spiel spielt.Abspielen einer MP3-Datei in iOS-App

Im Erstellen eines Spiels und ich versuche herauszufinden, wie man Musik spielt, wenn die App gestartet wird.

Ich versuchte dies:

- (void)awakeFromNib { 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"musicamenu" ofType:@"mp3"]; 

    AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 

    [theAudio play]; 


} 
+0

Sie in diesem vorherigen Frage aussehen möchten. http://StackOverflow.com/Questions/1296786/How-Do-I-Programmatics-Play-an-mp3-on-Aniphone – dotToString

Antwort

29

Dies ist, wie Sie es tun. In Ihrer v1AppDelegate.h Datei

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 
#import <AudioToolbox/AudioToolbox.h> 

@interface v1AppDelegate : UIResponder <UIApplicationDelegate> 
{ 
    AVAudioPlayer *myAudioPlayer; 
} 

@property (nonatomic, retain) AVAudioPlayer *myAudioPlayer; 

@property (strong, nonatomic) UIWindow *window; 

@end 

Jetzt in Ihrer v1AppDelegate.m Datei hinzufügen hinzufügen, um diesen

#import "v1AppDelegate.h" 
#import <AVFoundation/AVFoundation.h> 
#import <AudioToolbox/AudioToolbox.h> 

@implementation v1AppDelegate 

@synthesize window = _window; 

@synthesize myAudioPlayer; 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    //start a background sound 
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Soothing_Music2_Long" ofType: @"mp3"]; 
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];  
    myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; 
    myAudioPlayer.numberOfLoops = -1; //infinite loop 
    [myAudioPlayer play]; 


    // Override point for customization after application launch. 
    return YES; 
} 

Wenn Sie diese Musik zu stoppen oder von irgendwo anders in Ihrem Code beginnt dann einfach hinzufügen, um diesen

#import "v1AppDelegate.h"  
- (IBAction)stopMusic 
    { 
     v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
     [appDelegate.myAudioPlayer stop]; 
    } 


    - (IBAction)startMusic 
    { 
     v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
     [appDelegate.myAudioPlayer play]; 
    } 
+0

Ich habe es funktioniert FINEE !! DANKE JEDER! – user2444410

2

Ich empfehle die Musik spielen Methode in applicationDidBecomeActive: Methode hinzuzufügen. Weil Sie möchten, dass die Musik jedes Mal abgespielt wird, wenn die App gestartet wird. Beachten Sie, dass Sie einen Hinweis auf den Player halten sollten. Sonst wird die Musik nicht abgespielt.

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    // Play music on another queue so that the main queue is not blocked. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [self playMusic]; 
    }); 
} 

- (void)playMusic 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"done" ofType:@"mp3"]; 
    NSError *error = nil; 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    [self.player play]; 
} 
+1

"Beachten Sie, dass Sie einen Verweis auf den Player halten sollten. Andernfalls wird die Musik nicht wiedergegeben . " ersparte mich –

1

Für Swift 3.1:

Verwenden Sie diese zwei Importe:

import AVFoundation 
import AudioToolbox 

eine Referenz für Ihre AVAudioPlayer erstellen:

private var mAudioPlayer : AVAudioPlayer? 

Mit dieser Funktion können für die Wiedergabe einen Ton, den Sie in Ihrer Anwendung zu speichern sind:

func onTapSound(){ 
     let soundFile = Bundle.main.path(forResource: "slap_placeholder.wav", ofType: nil) 
     let url = URL(fileURLWithPath: soundFile!) 
     self.mAudioPlayer = try! AVAudioPlayer(contentsOf: url as URL) 
     self.mAudioPlayer?.play() 
}