2014-10-22 8 views
5

मेरे पास एक ऐप है जो हर बार स्क्रीन को छूने पर ध्वनि फ़ाइल चलाता है। किसी कारण के लिए, एप्लिकेशन हर एक बार थोड़ी देर में निम्न त्रुटि के साथ दुर्घटना होगा:ध्वनि संसाधन लोड नहीं किया जा सकता स्विफ्ट SKAction

reason: 'Resource tick.mp3 can not be loaded' 

मामले में आप इसकी आवश्यकता है, यहाँ है कि कैसे मैं फ़ाइल हर बार स्क्रीन टैप किया है खेलने:

runAction(SKAction.playSoundFileNamed("tick.mp3", waitForCompletion: false)) 

यह अक्सर नहीं होता है, शायद ऐप के 10 में से 1 रन। अधिकांश समय सब कुछ अपेक्षित के रूप में काम करता है। काश मैं जानता था कि मैं दुर्घटना का कारण बन रहा हूं लेकिन मुझे कोई सुराग नहीं है! मैं बस उस समय से अलग नहीं हूं जब यह दुर्घटनाग्रस्त नहीं होता है। फिर अचानक मैं इस मुद्दे को पाने के सभी ...

+0

पूर्व लोड हो रहा है एक वैश्विक निरंतर सहायता में ध्वनि कार्रवाई कर सकता है? – Okapi

+0

कृपया हमें 'संसाधन tick.mp3' का एक लिंक दें, इसलिए मैं इसे हल करने का प्रयास करूंगा। (उदाहरण के लिए ड्रॉपबॉक्स पर) –

+0

@ kartboy55 भी क्रैश लॉग उपयोगी होगा ... वास्तव में त्रुटि संदेश क्या है? – Whirlwind

उत्तर

3

आप एक playSound समारोह के माध्यम से ध्वनि खेलते हैं, यह काम करेंगे

var soundFile = SKAction.playSoundFileNamed("bark.wav", waitForCompletion: false) 
playSound(soundFile) 

playSound:

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

यह वही –

+5

@ निकिताज़र्नोव नहीं है यह वही बात नहीं है इसलिए मुझे यकीन नहीं है कि आपने वोट क्यों दिया। ध्वनि फ़ाइल को प्री-लोड करना और फिर इसे 'playSound' फ़ंक्शन के माध्यम से खेलना क्रैशिंग को रोकता है। इसी तरह के प्रश्न कई बार पूछे गए हैं और यह हमेशा समाधान रहा है। यह तेजी से एक बग माना जाता है। मुझे पता है कि यह वही दिखता है लेकिन केवल धारणाएं न करें क्योंकि इस मामले में आप गलत हैं। –

+1

धन्यवाद रीस केनी! आपके निर्णय ने मुझे अच्छी तरह से मदद की! –

4

सबसे पहले, यह ऐसा लगता है कि आप एमपी 3 फ़ाइल का उपयोग (लघु) ध्वनि प्रभाव खेलने के लिए कर रहे हैं। एमपी 3 का उपयोग करते समय ऑडियो संपीड़ित होता है। स्मृति में, यह अलग, बड़ा आकार होगा। इसके अलावा एक डिकोडिंग प्रदर्शन जुर्माना भी है (डीकोडिंग CPU समय लेता है)। सबसे महत्वपूर्ण बात यह है, और कारण है कि मैं एमपी 3 फ़ाइलों के बारे में बात कर रहा हूँ docs में पाया जा सकता:

When using hardware-assisted decoding, the device can play only a single instance of one of the supported formats at a time. For example, if you are playing a stereo MP3 sound using the hardware codec, a second simultaneous MP3 sound will use software decoding. Similarly, you cannot simultaneously play an AAC and an ALAC sound using hardware. If the iPod application is playing an AAC or MP3 sound in the background, it has claimed the hardware codec; your application then plays AAC, ALAC, and MP3 audio using software decoding.

आप देख सकते हैं, समस्या यह है कि एक समय में केवल एक एमपी 3 फ़ाइल हार्डवेयर का उपयोग कर खेला जा सकता है है। यदि आप एक समय में एक से अधिक एमपी 3 खेलते हैं, तो उन्हें सॉफ़्टवेयर के साथ डीकोड किया जाएगा और यह धीमा है।

तो, मैं ध्वनि प्रभाव खेलने के लिए .wav या .caf फ़ाइलों का उपयोग करने के लिए आप की सिफारिश करेंगे। एमपी 3 पृष्ठभूमि संगीत के लिए शायद अच्छा होगा।

दुर्घटनाग्रस्त मुद्दा के बारे में: SKAction करने के लिए एक मजबूत संदर्भ पकड़ और यह पुन: उपयोग करने के बजाय .mp3

  • कोशिश .wav या .caf फ़ाइलों का उपयोग करने के लिए

    • कोशिश के रूप में सुझाव रीस केनी द्वारा।
  • संबंधित मुद्दे