2014-10-31 11 views
5

Tôi gặp sự cố với bộ công cụ ma lực SKAction.playSoundFileNamed. Trong thực tế, sau một thời gian nó được phát một cách chính xác, ứng dụng đổ vỡ nói rằng nó sẽ không tải. Tệp được bao gồm trong gói nhập tệp dự án tồn tại và mọi thứ được đặt đúng.Skaction.playsoundfilenamed bị treo khi lặp lại - bộ ghi chú

Vấn đề duy nhất, sau một thời gian tôi chơi, tôi sẽ sụp đổ nói rằng nó không thể tìm thấy tệp hoặc ít nhất không thể tải được.

Câu hỏi của tôi là, có cách nào để nạp tiền mỗi khi SKAction.playSoundFileNamed âm thanh không?

EDIT - SOLVED

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

Các tải trước âm thanh instantiated không còn tạo ra vụ tai nạn

+0

Điều này đã được hỏi một vài lần trước, tôi tin rằng không có độ phân giải. Giả định của tôi là đây có thể là một lỗi. Ngoài ra các hành động playound là một cái nạng, một điều cần thiết để có một số cách dễ dàng để chơi âm thanh. Nếu bạn muốn phát lại âm thanh hợp lý, hãy sử dụng AVAudioPlayer hoặc một công cụ âm thanh tốt hơn như ObjectAL. – LearnCocos2D

+0

AVAudioPlayer với âm thanh dừng lại khi phần tiếp theo, nhưng tôi cần phải được sao chép toàn bộ âm thanh ngay cả khi chúng chồng lên nhau. Các giải pháp? –

Trả lời

7

prelound âm thanh biến

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

tôi đã giải quyết được vấn đề của mình với giải pháp này –

+0

tôi đã có cùng một vấn đề, sau đó cố gắng buộc mạng nên tôi đã giải quyết. Tôi đảm bảo với bạn rằng nó hoạt động và không bị hỏng. Nhờ vào số –

+0

tiếp theo Mặc dù lỗi này ít thường xuyên hơn, bạn vẫn sẽ gặp phải sự cố không thường xuyên. Đây là một vấn đề với táo và giải pháp này làm giảm đáng kể tần suất đâm và giới hạn nó để khởi chạy ứng dụng (giả sử đó là khi bạn tải trước hành động). –

-1

Tôi có điều này lớp helper ít loại SKNode để chơi âm thanh các tập tin. LƯU Ý: Đối tượng trợ giúp phải được thêm vào phân cấp SKScene để phát âm thanh.

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

} 
Các vấn đề liên quan