2014-10-31 10 views
5

मुझे स्प्राइट किट 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) 
} 

प्रीलोड लगता instantiated नहीं रह गया है दुर्घटना उत्पन्न

+0

यह कुछ बार पहले पूछा गया है, मैं संकल्प के बिना विश्वास करता हूं। मेरी धारणा यह है कि यह एक बग हो सकता है। इसके अलावा नाटक की कार्रवाई एक क्रैच है, ध्वनि चलाने के लिए कुछ आसान तरीका है। यदि आप कोई उचित ऑडियो प्लेबैक चाहते हैं, तो AVAudioPlayer या ऑब्जेक्टल जैसे ध्वनि इंजन का बेहतर उपयोग करें। – LearnCocos2D

+0

ध्वनि के साथ AVAudioPlayer अगले भाग पर बंद हो जाता है, लेकिन अगर वे ओवरलैप करते हैं तो भी मुझे पूरी आवाज़ में पुन: उत्पन्न करने की आवश्यकता होती है। समाधान की? –

उत्तर

7

prelound ध्वनि चर

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

मैं ऑडियो खेलने के लिए प्रकार 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) 
    } 

} 
संबंधित मुद्दे