2014-10-31 4 views
5

에 Skaction.playsoundfilenamed 충돌이 발생합니다. 스프라이트 키트 SKAction.playSoundFileNamed에 문제가 있습니다. 실제로는 제대로 재생 된 후 앱이로드되지 않는다는 오류가 발생합니다. 파일이 프로젝트 파일이 있고 모든 것이 올바르게 설정되어있는 번들 가져 오기에 포함되어 있습니다.반복 - 스프라이트 키트

제가 연주 한 시간이 지나면 유일한 문제는 파일을 찾을 수 없다는 메시지가 나타나거나 적어도로드 할 수 없다는 것입니다.

내 질문은 소리가 들릴 때마다 충전하는 방법이 있습니까? SKAction.playSoundFileNamed?

편집 -이 해결

//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) 
} 

사전로드는 더 이상

+0

이것은 몇 번 전에 물어 보았습니다. 내 가정은 이것이 버그 일 수 있습니다. 또한 playsound 작업은 버팀목, 소리를 재생할 수있는 쉬운 방법이 필요합니다. 합리적인 오디오 재생을 원하면 AVAudioPlayer를 사용하거나 ObjectAL과 같은 사운드 엔진을 사용하십시오. – LearnCocos2D

+0

다음 파트에서는 ​​사운드가있는 AVAudioPlayer가 중단되지만 겹칠 때도 전체 사운드로 재생해야합니다. 솔루션? –

답변

7

내가 오디오 재생을위한 형 SKNode의이 작은 헬퍼 클래스가 변수

//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) 
} 
+1

나는이 솔루션으로 나의 문제를 해결했다. –

+0

나는 똑같은 문제가 있었는데, 그래서 네트워크를 강제로 풀려고했다. 나는 그것이 작동하고 충돌하지 않는다는 것을 당신에게 확신합니다. 다음으로 감사합니다 –

+0

이 충돌은 자주 발생하지 않지만 가끔 충돌이 발생합니다. 이것은 애플의 문제이며이 솔루션은 충돌의 빈도를 크게 줄이고 앱 실행을 제한합니다 (동작을 사전로드 할 때를 가정). –

-1

소리 prelound 충돌 인스턴스를 생성하지 소리 파일. 참고 : 오디오를 재생하려면 Helper 개체를 SKScene 계층 구조에 추가해야합니다.

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) 
    } 

}