Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Skaction.PlaySoundFileName在重复时崩溃-精灵套件_Ios_Swift_Sprite Kit_Skaction - Fatal编程技术网

Ios Skaction.PlaySoundFileName在重复时崩溃-精灵套件

Ios Skaction.PlaySoundFileName在重复时崩溃-精灵套件,ios,swift,sprite-kit,skaction,Ios,Swift,Sprite Kit,Skaction,我对精灵套件SKAction.PlaySoundFileName有问题。 实际上,在正确播放一段时间后,应用程序崩溃,表示无法加载。 该文件包含在bundle中。导入项目文件时,所有内容都已正确设置 唯一的问题是,在我玩了一段时间后,我会崩溃,说它找不到文件,或者至少无法加载 我的问题是,是否有一种方法可以在每次播放SKAction.PlaySoundFileName的声音时重新充电 编辑-已解决 //init var sound = SKAction.playSoundFileNamed("s

我对精灵套件SKAction.PlaySoundFileName有问题。 实际上,在正确播放一段时间后,应用程序崩溃,表示无法加载。 该文件包含在bundle中。导入项目文件时,所有内容都已正确设置

唯一的问题是,在我玩了一段时间后,我会崩溃,说它找不到文件,或者至少无法加载

我的问题是,是否有一种方法可以在每次播放SKAction.PlaySoundFileName的声音时重新充电

编辑-已解决

//init
var sound = SKAction.playSoundFileNamed("sound.mp3", waitForCompletion: false)
var sound2 = SKAction.playSoundFileNamed("sound2.mp3", waitForCompletion: false) 

//in the code call function when play sound:
playSound(sound)

...

func playSound(soundVariable : SKAction)
{
    runAction(soundVariable)   
}

实例化的预加载声音不再生成崩溃

预加载声音变量

//init
var sound = SKAction.playSoundFileNamed("sound.mp3", waitForCompletion: false)
var sound2 = SKAction.playSoundFileNamed("sound2.mp3", waitForCompletion: false) 

//in the code call function when play sound:
playSound(sound)

...

func playSound(soundVariable : SKAction)
{
    runAction(soundVariable)   
}

我有一个SKNode类型的小助手类,用于播放音频文件。 注意:要播放音频,必须将辅助对象添加到场景层次结构中

import UIKit

enum SFX_TYPE:Int
{
    case NEW_LEVEL = 0
    case BANG = 1
}

let SFXContainer:[SFX_TYPE:[SKAction]] = [
    SFX_TYPE.NEW_LEVEL : [SKAction.playSoundFileNamed("newlevel.m4a", waitForCompletion: true)],
    SFX_TYPE.BANG : [
        SKAction.playSoundFileNamed("explosion1.m4a", waitForCompletion: true),
        SKAction.playSoundFileNamed("explosion2.m4a", waitForCompletion: true),
        SKAction.playSoundFileNamed("explosion3.m4a", waitForCompletion: true),
        SKAction.playSoundFileNamed("explosion4.m4a", waitForCompletion: true)
    ]
]

class SabilandSound: SKNode {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    deinit
    {
        Helper.masterObserverRemove(self)
    }

    override init()
    {
        super.init()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("masterPlaySFX:"), name: NCNPlaySFX, object: nil)
    }

    func masterPlaySFX(n:NSNotification)
    {
        let st = SFX_TYPE(rawValue: n.userInfo![NCNPlaySFX] as! Int)!
        let c = SFXContainer[st]!
        let a = SFXContainer[st]![Helper.randomBetween(0, max: c.count, includeMax: false)]
        runAction(a)
    }

}

我相信这已经被问过好几次了,我没有下定决心。我的假设是这可能是一个bug。此外,playsound动作是一个拐杖,需要有一些简单的方式来播放声音。如果您想要任何合理的音频播放,请使用AVAudioPlayer或更好的声音引擎,如ObjectAL.AVAudioPlayer,当下一部分停止时,声音停止,但我需要在整个声音中复制,即使它们重叠。解决方案?我遇到了同样的问题,然后试图强迫网络,所以我解决了。我向您保证它工作正常,不会崩溃。多亏了Nextal,虽然这种崩溃不那么频繁,但您仍然会偶尔遇到崩溃。这是苹果的一个问题,这个解决方案大大降低了崩溃的频率,并将其限制在应用程序发布时(假设是在您预加载操作的时候)。我没有降低错误的频率。我把它脱了。有了这个解决方案(以及在其他应用程序中使用),我没有遇到任何问题。虽然我确信有了swift 2和更多的开源软件,在这方面将会有很多的改进,而且你是我的英雄!你救了我的游戏哈哈哈:)谢谢,声音像地狱一样刺耳!!!!你应该得到更多的选票。