お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

「他クラスメソッドさーん!」「はーい!」

前回「残しておきたいものは、メンバ変数の中に」

効果音の実装をやったんやけど、

 

結局あれは使わんくて、←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^)!