私は ipad ゲームを仕上げていますが、Finch はゲーム サウンドを処理するのに非常に優れているようです... 私の質問は、アプリケーション デリゲートですべてのフィンチ メカニズムをインスタンス化し、それを複数のゲーム画面から使用することは可能ですか? つまり、デリゲートでフィンチの音を準備し、ゲーム画面から起動するということですか?
2 に答える
私は Finch メカニズムに精通していませんが、一般的に言えることは、アプリケーション デリゲートはこれを行う場所ではないということです。「SoundEngine」シングルトン クラスを作成することをお勧めします (アプリケーション デリゲートでアプリケーションが起動すると、これをインスタンス化できます)。このサウンド エンジンを Finch フレームワークにフックし、サウンドを再生するための便利なパブリック メソッドを作成します。これはシングルトンであるため、安全に使用でき、アプリケーション全体からアクセスでき、非常に便利にアクセスできます。
幸運を!
わかりました、プロジェクトの横にある独立したワークスペースに Finch をインストールしました。シングルトンの実装を開始すると、以下のコードで奇妙なエラーが発生しました
#import "FinchSoundManager.h"
#import "FISoundEngine.h"
#import "FIFactory.h"
@implementation FinchSoundManager
static FinchSoundManager *sharedInstance = nil;
@synthesize soundEngine,soundFactory;
- (id)init
{
self = [super init];
if (self) {
soundFactory = [[FIFactory alloc] init];
[soundFactory setLogger:FILoggerNSLog];
[self setSoundEngine:[soundFactory buildSoundEngine]];
[soundEngine activateAudioSessionWithCategory:AVAudioSessionCategoryPlayback];
[soundEngine openAudioDevice];
}
return self;
}
1) AVAudioSessionCategoryPlayback のエラー -> 未確認の識別子の使用 2) finch 自体: FISoundEngine: "Unknown Type Name AVAudioSession" #import "FILogger.h"
@interface FISoundEngine : NSObject
@property(copy) FILogger logger;
@property(readonly) BOOL isRunning;
@property(strong) AVAudioSession *audioSession;
- (BOOL) activateAudioSessionWithCategory: (NSString*) categoryName;
- (void) deactivateAudioSession;
- (BOOL) openAudioDevice;
- (void) closeAudioDevice;
@end
FISoundEngine のエラーがプロジェクトにインポートされただけなので、どこでエラーが発生したのかわかりません...手がかりはありますか?