我正在制作一个需要播放音乐的游戏。为了使我的代码更易于管理,我想制作一个 NSObject 来处理声音(如淡入淡出、在播放列表中播放声音等)。我有这个代码:
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
此代码在我将它放在 AppDelegate.m 文件中时有效,但在我将它放在新 NSObject 类中时不起作用。
NSObject 类中的代码(名为 Music):
- (void)playMusic:(NSString *)fileName ofType:(NSString *)type
{
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
NSLog(@"Works!");
}
我在 AppDelegate.m 中使用此代码调用该方法:
[[[Music alloc] init] playMusic:self.fileName ofType:self.extension];
执行此操作时,它会记录“工作!” 这意味着代码被执行。
所以完全相同的代码在 AppDelegate 中有效,但在 NSObject 类中无效。有谁知道是否可以在 NSObject 类中播放 NSSound(如果不是,为什么?),如果可以,如何编辑代码以使其正常工作?它会让我的代码看起来不那么凌乱;)