Swift NSSound 静音播放?
Swift NSSound plays silently?
我在 iOS 上做了一些 Swift 和相当数量的 Objective-C,但基本上没有真正的 OS X 编程,所以我没有t 使用 NSSound
。我试图在 Swift 论坛上帮助某人,但...它不起作用。我不知道为什么。
在操场上,Swift REPL 甚至脚本 (#!/usr/bin/env swift
),我可以成功实例化一个 NSSound:
NSSound(named:"Hero")
在 REPL / Playground 或从脚本中打印,我可以看到可选的里面有一个 NSSound。但是当我打电话给 play()
时,我没有听到任何声音:
NSSound(named:"Hero")!.play()
为什么?
这是一小段代码,看起来很简单,但显然我遗漏了一些东西。这没什么大不了的,因为它不是我需要的代码,但它让我很烦恼,因为它看起来很简单,但它不起作用。
作为 cocoa class,似乎 NSSound 在我测试过的任何环境中都无法正常工作:
- 游乐场
- Swift 脚本
- Swift REPL
如果我将相同的一小段代码放入骨架 OS X 应用程序,工作正常。
感谢@Leo 推动我实际尝试。我考虑过这种可能性,但直到他建议才尝试。
NSSound 异步播放它的声音。默认情况下,playground 在执行其代码后立即退出,因此进程在声音有机会播放之前终止。
这里有一个快速而肮脏的方法,可以让游乐场无限期地保持活跃,这样您就可以听到播放的声音。
import Cocoa
import XCPlayground
if let sound = NSSound(named:"Hero") {
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
sound.play()
}
我在 iOS 上做了一些 Swift 和相当数量的 Objective-C,但基本上没有真正的 OS X 编程,所以我没有t 使用 NSSound
。我试图在 Swift 论坛上帮助某人,但...它不起作用。我不知道为什么。
在操场上,Swift REPL 甚至脚本 (#!/usr/bin/env swift
),我可以成功实例化一个 NSSound:
NSSound(named:"Hero")
在 REPL / Playground 或从脚本中打印,我可以看到可选的里面有一个 NSSound。但是当我打电话给 play()
时,我没有听到任何声音:
NSSound(named:"Hero")!.play()
为什么?
这是一小段代码,看起来很简单,但显然我遗漏了一些东西。这没什么大不了的,因为它不是我需要的代码,但它让我很烦恼,因为它看起来很简单,但它不起作用。
作为 cocoa class,似乎 NSSound 在我测试过的任何环境中都无法正常工作:
- 游乐场
- Swift 脚本
- Swift REPL
如果我将相同的一小段代码放入骨架 OS X 应用程序,工作正常。
感谢@Leo 推动我实际尝试。我考虑过这种可能性,但直到他建议才尝试。
NSSound 异步播放它的声音。默认情况下,playground 在执行其代码后立即退出,因此进程在声音有机会播放之前终止。
这里有一个快速而肮脏的方法,可以让游乐场无限期地保持活跃,这样您就可以听到播放的声音。
import Cocoa
import XCPlayground
if let sound = NSSound(named:"Hero") {
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
sound.play()
}