无论我试图在项目中播放什么wav文件,我都会遇到同样的错误。错误指出:由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:'资源namedfile.wav无法加载'
我无法使用SKAction.playSoundFilenamed加载任何类型的声音。我确保文件名称正确,但似乎不是问题。
我在几个项目中测试了这个,包括以下测试游戏项目,其中除了调用SKAction之外我使用所有默认代码
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 65;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
let soundfile = SKAction.playSoundFileNamed("soundProject.wav", waitForCompletion: false)
runAction(soundfile)
self.addChild(myLabel)
}
我无法使用SKAction.playSoundFilenamed加载任何类型的声音。我已经检查过以确保文件名称正确并且它在包中退出。任何帮助将不胜感激。谢谢
更新我将我附加的代码放在另一台计算机上,它完全正常运行。我的xcode /模拟器一定有问题。有谁知道如何重置它?感谢
答案 0 :(得分:23)
在XCode中选择声音文件时,请访问右侧的检查器,然后确保为目标选择了文件。
答案 1 :(得分:5)
你的Sounds文件夹是什么颜色的?
如果是蓝色,则表示它是文件夹参考 如果它是黄色,则为组。
导入文件夹时选择文件夹参考-vs-组。
我发现 SKAction.playSoundFilenamed 只有当它作为组(黄色)加载时才能正常运行。
答案 2 :(得分:2)
这是另一个可能对你有帮助的领导。
有时SKAction对音频文件不是很方便。 我确实找不到哪种情况(可能是:大小文件,声音长度......)。
在这种情况下,您可能希望使用AVAudioPlayer
代替它。
为了不写自己的"播放器",我建议您使用现有的播放器。这是我已经使用过的一个(SKTAudio):https://github.com/raywenderlich/SKTUtils/blob/master/SKTUtils/SKTAudio.swift
以下是如何使用它:
// For background audio (playing continuously)
SKTAudio.sharedInstance().playBackgroundMusic("music.wav") // Start the music
SKTAudio.sharedInstance().pauseBackgroundMusic() // Pause the music
SKTAudio.sharedInstance().resumeBackgroundMusic() // Resume the music
// For short sounds
SKTAudio.sharedInstance().playSoundEffect("sound.wav") // Play the sound once
如果AVAudioPlayer
即使文件未播放也请告诉我。如果是这样,它可能是一个问题,而不是它的播放方式。
答案 3 :(得分:1)
for swift 3.0:
SKAction.run {
SKAction.playSoundFileNamed("soundProject.wav",
waitForCompletion: false)
}
}
当然要验证资源是否在项目/复制阶段..
答案 4 :(得分:1)
对我来说,这就是问题所在。两者都编译良好,没有给出任何错误,但只有后者能真正播放声音。
不起作用:
SKAction.playSoundFileNamed("combo.mp3", waitForCompletion: true)
已完成工作:
node.run(SKAction.playSoundFileNamed("combo.mp3", waitForCompletion: true))
祝你好运!
答案 5 :(得分:0)
我发现了这个问题。我不得不通过系统首选项更改我的mac上的声音设置。一旦我将所有设置更改为仅使用内置扬声器,问题就解决了。
答案 6 :(得分:-1)
迅速5:
代替
SKAction.repeatForever(SKAction.playSoundFileNamed(“ Sounds / theme.mp3”,waitForCompletion:true))
我写了
var uri = '/CommodityTypes/PostData';
var xmlhttp;
xmlhttp = new XMLHttpRequest();
var data = { "text": "YourText" };
var sendstr = JSON.stringify(data);
xmlhttp.open("POST", uri, true);
xmlhttp.setRequestHeader('Content-Type', 'application/json');
xmlhttp.send(sendstr);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
alert(xmlhttp.responseText);
}
效果很好。