swift的代码教程-ios简单声音类(SoundOp)

//直接代码。为了简化音频播放,小弟,稍微封了下,便于管理。学习使用。勿喷谢谢!


import Foundation
import UIkit
import AVFoundation

class SoundOp:NSObject{
    
    class func playSound(soundPath:String!,loopNum loops:Int!,isCover cover:Bool!,vlo vloNum:Float!,playState isPlay:Bool!,delegate:AVAudioPlayerDelegate?)->AVAudioPlayer{
        var err:NSErrorPointer = nil;
        var newsound = Sound()
        var url:NSURL = NSURL(fileURLWithPath:soundPath)
        newsound.sound = AVAudioPlayer(contentsOfURL:url ,error: err)
        newsound.soundPath = soundPath
        if cover && SoundManager.allPlayerArry.count>0 {
            for var i=0; i<SoundManager.allPlayerArry.count; ++i{
                if  soundPath == SoundManager.allPlayerArry[i].soundPath{
                    SoundManager.allPlayerArry.replaceObjectAtIndex(Int(i), withObject: newsound)
                }
            }
        }else{
            SoundManager.allPlayerArry.addObject(newsound)
        }
        newsound.sound.numberOfLoops = loops
        newsound.sound.volume = vloNum
        newsound.sound.delegate = delegate
        newsound.sound.prepareToPlay()

        if isPlay{
            newsound.sound.play()
        }
        
        println(SoundManager.allPlayerArry.count)
        return newsound.sound
    }

    class func playNewSound(path:String!)->AVAudioPlayer{
        return playSound(path,loopNum: 0,isCover: false,vlo: 1,playState: true,delegate: nil)
    }
    
    class func playOldSound(path:String!)->AVAudioPlayer{
        return playSound(path,loopNum: 0,isCover: true,vlo: 1,playState: true,delegate: nil)
    }
    
    class func playBGM(path:String!)->AVAudioPlayer{
        SoundManager.bgPlayer = playSound(path,loopNum: -1,isCover: true,vlo: 1,playState: true,delegate: nil)
        return  SoundManager.bgPlayer
    }
    
    class func destroySound(sound:AVAudioPlayer!){
        sound.stop()
        for var i=0; i<SoundManager.allPlayerArry.count; ++i{
            if sound == SoundManager.allPlayerArry[i].sound {
                SoundManager.allPlayerArry.removeObjectAtIndex(i)
            }
        }
    }
    
    
    class func stopAllSoundEffect(){
        if SoundManager.allPlayerArry.count>0{
            for var i = 0; i<SoundManager.allPlayerArry.count; ++i{
                SoundManager.allPlayerArry[i].stop()
            }
        }
    }
    
    class func pauseAllSoundEffect(){
        if SoundManager.allPlayerArry.count>0{
            for var i = 0; i<SoundManager.allPlayerArry.count; ++i{
                SoundManager.allPlayerArry[i].pause()
            }
        }
    }
    
    class func playFadeShowSoundName(path:String!){
        var s = Sound()
        s.sound = playSound(path, loopNum: 0, isCover: true, vlo: 0, playState: false, delegate: nil)
        s.soundPath = path
        
        var dic = NSMutableDictionary()
        dic.setObject(s.sound, forKey: "fadeShow")
        println(s)
        NSTimer.scheduledTimerWithTimeInterval(0.01, target:s, selector:"fadeShowValue:", userInfo: dic, repeats: true)
        s.sound.play()
    }
    
    class func playFadeHiddenSoundName(path:String!){
        var s = Sound()
        s.sound = playSound(path, loopNum: 0, isCover: true, vlo: 1, playState: true, delegate: nil)
        s.soundPath = path
        
        var dic = NSMutableDictionary()
        dic.setObject(s.sound, forKey: "fadeHidden")
        println(s)
        NSTimer.scheduledTimerWithTimeInterval(0.01, target:s, selector:"fadeHiddenValue:", userInfo: dic, repeats: true)
    }
    
   
}

class Sound:NSObject{
    var sound:AVAudioPlayer = AVAudioPlayer()
    var soundPath:String = ""
    
    func fadeShowValue(timer:NSTimer){
        var player = timer.userInfo.objectForKey("fadeShow") as AVAudioPlayer
        player.volume += 0.01
        if player.volume>=1 {
            timer.invalidate()
            return
        }
    }
    
    func fadeHiddenValue(timer:NSTimer){
        var player = timer.userInfo.objectForKey("fadeHidden") as AVAudioPlayer
        player.volume -= 0.01
        if player.volume<=1 {
            player.stop()
            timer.invalidate()
            return
        }
    }
}

struct SoundManager{
    static var bgPlayer:AVAudioPlayer! = AVAudioPlayer()
    static var allPlayerArry:NSMutableArray! = NSMutableArray()
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值