iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Geluiden afspelen (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/78044-geluiden-afspelen.html)

Robbee 20-11-10 20:30

Geluiden afspelen
 
Ik heb een viewcontroller met 2 buttons en deze code.


#import "MouseViewController.h"


@implementation MouseViewController
@synthesize player;

- (void)viewDidLoad {
[super viewDidLoad];
}

-(IBAction) play1{
NSString *path = [[NSBundle mainBundle] pathForResource:@"Ænema" ofType:@"caf"];
NSURL *file = [[NSURL alloc] initFileURLWithPath:path];
AVAudioPlayer *p = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil];
[file release];
self.player = p;
[p release];
[self.player play];
}



-(IBAction) play2{
NSString *path = [[NSBundle mainBundle] pathForResource:@"blip" ofType:@"caf"];
NSURL *file = [[NSURL alloc] initFileURLWithPath:path];
AVAudioPlayer *p = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil];
[file release];
self.player = p;
[p release];
[self.player play];
}


- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
[self.player stop];
[super viewDidUnload];
}

- (void)dealloc {
[player release];
[super dealloc];
}


@end

Iedere button speelt dus een geluid.
Op zich werkt het, maar bij de eerste keer drukken duurt het even voor er geluid komt.
Waarschijnlijk heeft dat te maken met het feit dat [player prepareToPlay] niet is geïmplementeerd in de code ( als ik dat op een button uitvoer heeft dat dus geen nut :p).

Verder wil ik dat het afspelen stopt als de viewcontroller wordt verlaten ( zie [self.player stop] ) maar ook dit werk niet.

Ik ben een beginner, maar dit moet volgens mij allemaal wat eenvoudiger kunnen, wie duwt me in de goede richting ?

Alvast bedankt.

Robbee 24-11-10 10:30

Niemand :( ?

Nikooos 24-11-10 20:05

Niet zoveel bezig geweest met geluid, maar kan je de geluiden niet alvast declareren in de ViewDidLoad? En dan alleen het aspelen aan de actie hangen? Zomaar een ideetje.

En volgens mij moet je voor het stoppen in de ViewWilDissapear (ofzo) die stop aanroepen.

Hollance 26-11-10 13:11

Je zou System Sound Services kunnen gebruiken:
How to Play a Short Sound in iPhone Code | How to Make iPhone Apps

Robbee 26-11-10 20:51

System Sound Services zal ik eens proberen, thanx.

Ik moet inderdaad op een andere manier gaan werken.
De app die ik voor ogen heb is een soort van soundboard, opgezet met een tabbarcontroller. 5 viewcontrollers met ieder een aantal buttons die een geluid afspelen.

Dat afspelen moet ik denk ik in een class stoppen en deze aanroepen met de naam van het geluid dat ik wil horen.

We klooien verder !


Alle tijden zijn GMT +2. Het is nu 20:34.