「他クラスメソッドさーん!」「はーい!」
効果音の実装をやったんやけど、
結局あれは使わんくて、←w
(なぞの不具合もばしばし起こりまくり)
「AppDelegateちゃんに音を鳴らさせる」
という実装に変更しました。
他のクラスにメソッドを実行させるのは初の試み。(どきどき)
まずはAppDelegate.hに、こないだと同様
#import <AVFoundation/AVFoundation.h>
AVAudioPlayer* _seaSound;
AVAudioPlayer* _btnSound;
を追加。
(AVFoundation.Frameworkは取得しておく)
そして、AppDelegate.mに、普段どおりメソッドを実装。
-(void)seaSoundPlay{
NSString *seaPath = [[NSBundlemainBundle] pathForResource:@"sea"ofType:@"wav"];
NSURL *seaUrl = [NSURL fileURLWithPath:seaPath];
_seaSound = [[AVAudioPlayeralloc] initWithContentsOfURL:seaUrl error:nil];
[_seaSoundplay];
_seaSound.numberOfLoops = -1;
}
-(void)seaSoundStop{
[_seaSoundstop];
}
ここで忘れてはいけないのが、
音を鳴らさせたいクラスのヘッダファイルを
AppDelegate.mのほうに#importすること!
それが終わったら、呼び出したいクラスのほうに、
#import "AppDelegate.h"
AppDelegate* _sounddelegate;
を追加。
そのクラスの音を鳴らしたいところに
_sounddelegate = (AppDelegate*)[[UIApplicationsharedApplication] delegate];
[_sounddelegateseaSoundPlay];
と書いて、SoundDelegateちゃんをよびだして、
音を鳴らさせます。
ちなみにこれもキャストしてる。
[UIApplication sharedApplication]て書くと、
このアプリケーションの実体にアクセスすることができるのだそうです。
(だから便利やけどあまり触らないほうがいいっちゃいいのかも)
ちなみにこのデリゲートちゃん、
一回作成しちゃったら、
その後は何度でも使えるけ、
viewDidLoadに書いとくといいーね!
あと他クラスから使いたかったら忘れちゃいけんのが、
.hのほうにプロパティでメソッドを書いておくこと!
これ書いとかないと、外からさわれませんよ。
おっけー?自分!
不具合も解消されて、すっきり(^O^)!