SKAction playsoundfilenamed无法加载声音

时间:2015-03-03 03:05:08

标签: swift audio sprite-kit skaction

无论我试图在项目中播放什么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 /模拟器一定有问题。有谁知道如何重置它?感谢

7 个答案:

答案 0 :(得分:23)

在XCode中选择声音文件时,请访问右侧的检查器,然后确保为目标选择了文件。

CaptureTarget

答案 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);
}

效果很好。