簡體   English   中英

節點上的Swift SpriteKit聲音

[英]Swift SpriteKit Sound on Node

到目前為止,我發現解決此問題的任何可能性:

我正在嘗試向特定節點添加聲音效果。 將節點從父節點移除后,聲音應停止。 觸摸節點時,聲音也應停止。 我用playSoundFileNamed(“ name”,waitForCompletion:false)嘗試過,但是您無法停止此操作。

AV音頻播放器在后台播放聲音。

如果有人有一些新想法可以嘗試,那就太好了。

簡而言之,您無法停止使用SKAction這樣播放的聲音。 正如您已經提到的,您可以將AVAudioPlayer用於此目的(我不確定將其用於sfx時的性能)。 或者,您可以使用高性能的ObjectAL庫。 SKAction的playSoundFileNamed方法可能用於播放短聲音,但是除了播放聲音之外,您沒有其他控件。 您不能暫停或恢復它或類似操作。 拔下操作鍵也無助於聲音在播放完畢之前停止播放(例如,您無法在中間停止播放聲音)。

您還可以檢查iOS 9.0和更高版本中提供的SKAudioNode 有一組SKAction方法可與SKAudioNode一起使用。 我個人沒有嘗試過這些,但是也許值得一看。

希望這可以幫助。

您可以嘗試子類化SKSpriteNode ,您可以根據自己的喜好自定義spriteNode

import SpriteKit

class SoundSourceNode: SKNode {

    let spriteNode = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: 20, height: 20))
    let audioNode = SKAudioNode(fileNamed: "Boing-One Low.mp3")

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    init(size: CGSize)
    {
        spriteNode.position = CGPoint(x: 0, y: 0)
        audioNode.positional = true
        audioNode.position = CGPoint(x: 0, y: 0)

        super.init()

        self.addChild(spriteNode);
        self.addChild(audioNode);
    }
}

請注意, SKAudioNode在iOS9及更高版本中可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM