我有一些NSSound我想转换为AVAudioPlayer实例的对象.我有NSURL与NSSound对象关联的文件路径,但原始文件可能不存在.这是我到目前为止:
class SoundObj: NSObject {
var path: NSURL?
var sound: NSSound?
var player: AVAudioPlayer
}
let aSound = SoundObj()
aSound.path = NSURL(fileURLWithPath: "file:///path/to/sound.m4a")
aSound.sound = NSSound(contentsOfURL: aSound.path)!
do {
try aSound.player = AVAudioPlayer(contentsOfURL: aSound.path)
} catch {
// perhaps use AVAudioPlayer(data: ...)?
}
Run Code Online (Sandbox Code Playgroud)
如何将NSSound对象转换为AVAudioPlayer实例?
我正在制作一款需要播放音乐的游戏.为了使我的代码更易于管理,我想制作一个能够处理声音的NSObject(如淡入淡出,播放播放列表中的声音等).我有这个代码:
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];
Run Code Online (Sandbox Code Playgroud)
当我将它放在AppDelegate.m文件中时,此代码可以工作,但是当我将它放在New 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!");
}
Run Code Online (Sandbox Code Playgroud)
我在AppDelegate.m中使用此代码调用该方法:
[[[Music alloc] init] playMusic:self.fileName ofType:self.extension];
Run Code Online (Sandbox Code Playgroud)
执行此操作时,它会记录"Works!" 这意味着代码被执行.
所以完全相同的代码在AppDelegate中工作,但在NSObject类中不起作用.有没有人知道是否可以在NSObject类中播放NSSound(如果不是,为什么?),如果是这样,如何编辑代码以使其有效?它会使我的代码看起来不那么混乱;)
我为我的Mac写了一个廉价而欢快的声板,我用NSSound播放各种声音:
-(void)play:(NSSound *)soundEffect:(BOOL)stopIfPlaying {
BOOL wasPlaying = FALSE;
if([nowPlaying isPlaying]) {
[nowPlaying stop];
wasPlaying = TRUE;
}
if(soundEffect != nowPlaying)
{
[soundEffect play];
nowPlaying = soundEffect;
} else if(soundEffect == nowPlaying && ![nowPlaying isPlaying] && !wasPlaying) {
[nowPlaying play];
}
}
Run Code Online (Sandbox Code Playgroud)
而不是仅仅停止它,我希望它能在几秒钟内消失.
是否有关于如何在Mac上使用Delphi XE2 FireMonkey构建的应用程序播放WAV文件的教程或示例?
我问,因为这段代码不起作用:
var
//fWaves head and data is initialized and plays properly on Win through OpenAL
fWaves: array of record
Head: TWAVHeaderEx;
Data: array of byte;
end;
D: NSData;
N: NSSound;
begin
D := TNSData.Wrap(TNSData.Create.initWithBytes(@fWaves[0].Head, SizeOf(fWaves[0].Head) + fWaves[0].Head.DataSize));
ShowMessage(IntToStr(D.length)); //--Length is correct
N := TNSSound.Wrap(TNSSound.Create.initWithData(D));
ShowMessage(FloatToStr(N.Duration)); //--Displays 0
if N.play then
ShowMessage('Yes')
else
ShowMessage('No'); //--Always returns NO
end;
Run Code Online (Sandbox Code Playgroud)
我正在从内存加载WAV文件头和数据,它可以与OpenAL一起使用.所以问题出在我的NSSound用法中.有谁能在Mac上提供Delphi XE2声音播放的一些工作示例?
我想在按下按钮时发出声音.此外,还有不止一种声音.我正在使用Xcode 4.4.1和Storyboard.
在.h文件中
{
IBOutlet UIButton *playSound;
}
Run Code Online (Sandbox Code Playgroud) 好的.我正在寻找一种简洁的方法来列出使用[NSSound soundNamed:]播放的系统声音 - 对我而言似乎API没有可用声音列表.
我还用谷歌搜索了这个,发现了一些相当古老且部分已被弃用的资源.如果应用程序应该有一个声音拾取器 - 什么是获得系统提供的声音列表的最佳方法?
我希望能够在iPhone OS应用程序中播放声音片段.我已经看到NSSound和AVFoundation的信息都是在iPhone OS设备上播放声音片段的方法,但我仍然不清楚这个主题并且可以使用一些帮助.不需要在实际代码中逐步拼出我,但是如果有人能给我一个关于我应该开始移动的大方向(即我应该关注哪些类)的提示我会填写在我自己的空白.那么,在iPhone应用程序中播放声音片段的最简单方法是什么?
sound = [[NSSound alloc] initWithContentsOfFile:@"staticbeam09.wav" byReference:YES];
Run Code Online (Sandbox Code Playgroud)
Apple文档中引用的代码。将其放在viewDidLoad中时出现错误。如果我放
NSSound *sound;
Run Code Online (Sandbox Code Playgroud)
在头文件中,在实现文件的顶部出现了specifier-qualifier错误。我必须做些什么才能使这项工作?我只是粘贴Apple文档中的代码-是否已弃用?谢谢你的帮助!
我正在制作一个可以在事件中播放声音的应用程序,但我无法弄清楚如何从应用程序的ressources文件夹中访问文件.
这是我正在做的事情:
NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];
Run Code Online (Sandbox Code Playgroud)
但它根本不起作用.如果我放一个完整长度的路径它会工作,但我需要另一种方式,因为有人可能会将我的应用程序放在Application文件夹以外的其他位置.
nssound ×9
objective-c ×5
macos ×4
cocoa ×3
audio ×2
iphone ×2
xcode ×2
avfoundation ×1
delphi ×1
delphi-xe2 ×1
firemonkey ×1
frameworks ×1
ios ×1
nsobject ×1
swift ×1