2015-06-19 19 views
9

मैं अपने ऐप के क्रैश लॉग से स्प्राइटकिट प्लेसाउंडफाइल नामांकित दुर्घटनाओं की कुछ छोटी मात्रा देख रहा हूं। आईओएस 8.3 पर दुर्घटनाएं होती हैं।स्प्राइटकिट playSoundFile नामांकित क्रैश आईओएस पर 8.3

0 CoreFoundation __exceptionPreprocess 
1 libobjc.A.dylib objc_exception_throw 
2 CoreFoundation -[NSException initWithCoder:] 
3 SpriteKit +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:] 
4 SpriteKit +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:] 
... 

और कुछ संबंधित दुर्घटनाओं:

0 CoreFoundation __exceptionPreprocess 
1 libobjc.A.dylib objc_exception_throw 
2 CoreFoundation -[NSException raise:format:] 
3 SpriteKit +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:] 
4 SpriteKit +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:] 
... 

किसी को भी पता है कि इस दुर्घटना और इसे ठीक करने के लिए क्या कारण हैं? क्या मुझे खेलने के लिए हर कॉल को लपेटना चाहिए साउंडफाइल नाम: एक कोशिश-पकड़ ब्लॉक में?

संपादित

अधिक जानकारी:

मैं स्विफ्ट उपयोग कर रहा हूँ। अपनी आवाजों को चलाने की कोशिश कर रहा हूं और मैं विभिन्न ध्वनियों से आने वाली दुर्घटनाओं को देख रहा हूं। मैं आईओएस 8.2 से कुछ रिपोर्ट भी देख रहा हूं इसलिए यह क्रैश आईओएस 8.3 विशिष्ट नहीं हो सकता है।

लाइनों कि ध्वनि चलाने:

var sound = SKAction.playSoundFileNamed("Sound/ABC.mp3", waitForCompletion: false) 
self.runAction(sound) 
+0

कृपया, अधिक जानकारी प्रदान करें: क्या आप सिस्टम बंडल से अपनी आवाज या एक खेलना चाहते हैं? क्या यह एक विशेष आवाज है जो दुर्घटनाग्रस्त हो या उनमें से सभी? क्या यह केवल आईओएस 8.3 पर दुर्घटनाग्रस्त है? क्या आप उन रेखाओं को पेस्ट कर सकते हैं जो ध्वनि बनाते हैं/बजाते हैं? आदि ... – lchamp

+0

आप किस भाषा का उपयोग कर रहे हैं - स्विफ्ट या ओब्जे-सी? – sangony

+0

मैं स्विफ्ट का उपयोग कर रहा हूँ। अपनी आवाजों को चलाने की कोशिश कर रहा हूं और मैं विभिन्न ध्वनियों से आने वाली दुर्घटनाओं को देख रहा हूं। मैं आईओएस 8.2 से कुछ रिपोर्ट भी देख रहा हूं, इसलिए यह अब आईओएस 8.3 विशेष रूप से हो सकता है। – user1615898

उत्तर

2

मैं एक समय पहले एक ऐसी ही समस्या आ रही। मुद्दा यह था कि परिवर्तनीय को खेलने के लिए पर्याप्त रूप से पर्याप्त नहीं बनाया जा सका क्योंकि जब भी उपयोगकर्ता स्क्रीन पर टैप करता था तब मैं चर बना रहा था। DidMoveToView में कार्रवाई को परिभाषित करने का प्रयास करें, और यह देखकर कि आपको अभी भी समस्या मिल रही है या नहीं। आशा है कि

0

मुझे समान समस्या थी। मेरा खेल (स्विफ्ट + स्प्राइटकिट) आईओएस 8.x पर अनिश्चितता को दुर्घटनाग्रस्त कर रहा था। लेकिन 9.x पर सही काम करता है। लॉग का टुकड़ा:

2015-12-15 21:27:40.827 MyGame[24055:2285857] 
     *** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
     reason: 'Resource assets/mfx/my_sound.m4a can not be loaded' 
    *** First throw call stack: 
    (
    0 CoreFoundation  0x008ae746 __exceptionPreprocess + 182 
    1 libobjc.A.dylib 0x02598a97 objc_exception_throw + 44 
    2 CoreFoundation  0x008ae66d +[NSException raise:format:] + 141 
    3 SpriteKit   0x011ca435 +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:] + 628 
    4 SpriteKit   0x011601b4 +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:] + 78 
    5 MyGame    0x0012eb25 

समाधान है: एक स्थिरांक (चलो) के रूप में केवल एक बार सभी ध्वनियों को लोड करें। हर बार जब आप ध्वनि बजाना चाहते हैं तो वैरिएबल न बनाएं।

import SpriteKit 
import AVFoundation 

class Sounds 
{ 
    static let SOUND1 = SKAction.playSoundFileNamed("assets/sound1.m4a", waitForCompletion: false) 
    static let SOUND2 = SKAction.playSoundFileNamed("assets/sound2.m4a", waitForCompletion: false) 
} 

तो, उदाहरण के लिए कुछ SKSpriteNode में:

func playSound1() 
{ 
    self.runAction(Sounds.SOUND1) 
} 

समान/एक ही यहाँ मुद्दा खोजें: Skaction.playsoundfilenamed crashes when repeat - sprite kit

1

इस कोशिश करो और मुझे पता है अगर इसके काम कर रहे हैं।

var audioPlayer = AVAudioPlayer() 

func playAudio() { 
    // Set the sound file name & extension 
    let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("ABC", ofType: "mp3")!) 


    // Preperation 
    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: []) 
    try! AVAudioSession.sharedInstance().setActive(true) 

    // Play the sound 
    do { 
     try audioPlayer = AVAudioPlayer(contentsOfURL: alertSound) 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
    } catch { 
     print("there is \(error)") 
    } 
} 
संबंधित मुद्दे