最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

講解iOS開(kāi)發(fā)中對(duì)音效和音樂(lè)播放的簡(jiǎn)單實(shí)現(xiàn)

 更新時(shí)間:2015年11月11日 09:13:49   作者:文頂頂  
這篇文章主要介紹了iOS開(kāi)發(fā)中對(duì)音效和音樂(lè)播放的簡(jiǎn)單實(shí)現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下

音效的播放

一、簡(jiǎn)單介紹

簡(jiǎn)單來(lái)說(shuō),音頻可以分為2種

(1)音效

又稱(chēng)“短音頻”,通常在程序中的播放時(shí)長(zhǎng)為1~2秒

在應(yīng)用程序中起到點(diǎn)綴效果,提升整體用戶體驗(yàn)

(2)音樂(lè)

  比如游戲中的“背景音樂(lè)”,一般播放時(shí)間較長(zhǎng)

框架:播放音頻需要用到AVFoundation.framework框架

二、音效的播放

1.獲得音效文件的路徑

復(fù)制代碼 代碼如下:

  NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];

2.加載音效文件,得到對(duì)應(yīng)的音效ID

復(fù)制代碼 代碼如下:

  SystemSoundID soundID = 0;

  AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);

3.播放音效

復(fù)制代碼 代碼如下:

  AudioServicesPlaySystemSound(soundID);

 

注意:音效文件只需要加載1次

4.音效播放常見(jiàn)函數(shù)總結(jié)

加載音效文件

復(fù)制代碼 代碼如下:

  AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)

釋放音效資源
復(fù)制代碼 代碼如下:

  AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)

播放音效
復(fù)制代碼 代碼如下:

  AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)

播放音效帶點(diǎn)震動(dòng)
復(fù)制代碼 代碼如下:

  AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)

 

三、程序示例

先導(dǎo)入需要依賴(lài)的框架

2015111190914661.png (363×152)

導(dǎo)入需要播放的音效文件素材

2015111190944885.png (238×366)

說(shuō)明:AVFoundation.framework框架中的東西轉(zhuǎn)換為CF需要使用橋接。

代碼示例:

復(fù)制代碼 代碼如下:

YYViewController.m文件
//
//  YYViewController.m
//  14-音效播放
//
//  Created by apple on 14-8-8.
//  Copyright (c) 2014年 yangyong. All rights reserved.
//

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()

@end


復(fù)制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.獲得音效文件的全路徑
   
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"buyao.wav" withExtension:nil];
   
    //2.加載音效文件,創(chuàng)建音效ID(SoundID,一個(gè)ID對(duì)應(yīng)一個(gè)音效文件)
    SystemSoundID soundID=0;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &soundID);
   
    //把需要銷(xiāo)毀的音效文件的ID傳遞給它既可銷(xiāo)毀
    //AudioServicesDisposeSystemSoundID(soundID);
   
    //3.播放音效文件
    //下面的兩個(gè)函數(shù)都可以用來(lái)播放音效文件,第一個(gè)函數(shù)伴隨有震動(dòng)效果
    AudioServicesPlayAlertSound(soundID);
    //AudioServicesPlaySystemSound(<#SystemSoundID inSystemSoundID#>)
}

@end


說(shuō)明:點(diǎn)擊屏幕可以播放音效文件。

音樂(lè)的播放

一、簡(jiǎn)單說(shuō)明

  音樂(lè)播放用到一個(gè)叫做AVAudioPlayer的類(lèi),這個(gè)類(lèi)可以用于播放手機(jī)本地的音樂(lè)文件。

注意:

 ?。?)該類(lèi)(AVAudioPlayer)只能用于播放本地音頻。

 ?。?)時(shí)間比較短的(稱(chēng)之為音效)使用AudioServicesCreateSystemSoundID來(lái)創(chuàng)建,而本地時(shí)間較長(zhǎng)(稱(chēng)之為音樂(lè))使用AVAudioPlayer類(lèi)。

二、代碼示例

  AVAudioPlayer類(lèi)依賴(lài)于AVFoundation框架,因此使用該類(lèi)必須先導(dǎo)入AVFoundation框架,并包含其頭文件(包含主頭文件即可)。

2015111191006800.png (605×143)

2015111191024806.png (707×191)

導(dǎo)入必要的,需要播放的音頻文件到項(xiàng)目中。

代碼示例:

復(fù)制代碼 代碼如下:

//
//  YYViewController.m
//  15-播放音樂(lè)
//

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()

@end


復(fù)制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
    AVAudioPlayer *audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [audioPlayer prepareToPlay];
   
    //4.播放
    [audioPlayer play];
}

@end


代碼說(shuō)明:運(yùn)行程序,點(diǎn)擊模擬器界面,卻并沒(méi)有能夠播放音頻文件,原因是代碼中創(chuàng)建的AVAudioPlayer播放器是一個(gè)局部變量,應(yīng)該調(diào)整為全局屬性。

可將代碼調(diào)整如下,即可播放音頻:

復(fù)制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *audioplayer;
@end


復(fù)制代碼 代碼如下:

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
    self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [self.audioplayer prepareToPlay];
   
    //4.播放
    [self.audioplayer play];
}

@end


注意:一個(gè)AVAudioPlayer只能播放一個(gè)url,如果想要播放多個(gè)文件,那么就得創(chuàng)建多個(gè)播放器。

三、相關(guān)說(shuō)明

新建一個(gè)項(xiàng)目,在storyboard中放三個(gè)按鈕,分別用來(lái)控制音樂(lè)的播放、暫停和停止。

2015111191047433.png (311×491)

程序代碼如下:

復(fù)制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end

@implementation YYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    //1.音頻文件的url路徑
    NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
   
    //2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
    self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
   
    //3.緩沖
    [self.player prepareToPlay];

}

- (IBAction)play {
    //開(kāi)始播放/繼續(xù)播放
    [self.player play];
}

- (IBAction)pause {
    //暫停
    [self.player pause];
}

- (IBAction)stop {
    //停止
    //注意:如果點(diǎn)擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會(huì)出現(xiàn)一些莫名其面的問(wèn)題
    [self.player stop];
}
@end


注意:如果點(diǎn)了“停止”,那么一定要播放器重新創(chuàng)建,不然的話會(huì)出現(xiàn)莫名其妙的問(wèn)題。

  點(diǎn)擊了stop之后,播放器實(shí)際上就不能再繼續(xù)使用了,如果還繼續(xù)使用,那么后續(xù)的一些東西會(huì)無(wú)法控制。

推薦代碼:

復(fù)制代碼 代碼如下:

#import "YYViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end


復(fù)制代碼 代碼如下:

@implementation YYViewController

#pragma mark-懶加載
-(AVAudioPlayer *)player
{
    if (_player==Nil) {
       
        //1.音頻文件的url路徑
        NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
       
        //2.創(chuàng)建播放器(注意:一個(gè)AVAudioPlayer只能播放一個(gè)url)
        self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
       
        //3.緩沖
        [self.player prepareToPlay];
    }
    return _player;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)play {
    //開(kāi)始播放/繼續(xù)播放
    [self.player play];
}

- (IBAction)pause {
    //暫停
    [self.player pause];
}

- (IBAction)stop {
    //停止
    //注意:如果點(diǎn)擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會(huì)出現(xiàn)一些莫名其面的問(wèn)題
    [self.player stop];
    self.player=Nil;
}
@end


四、播放多個(gè)文件
2015111191115987.png (656×72)
點(diǎn)擊,url,按住common建查看。

2015111191137068.png (491×67)

可以發(fā)現(xiàn),這個(gè)url是只讀的,因此只能通過(guò)initWithContentsOfUrl的方式進(jìn)行設(shè)置,也就意味著一個(gè)播放器對(duì)象只能播放一個(gè)音頻文件。

那么如何實(shí)現(xiàn)播放多個(gè)音頻文件呢?

可以考慮封裝一個(gè)播放音樂(lè)的工具類(lèi),下一篇文章將會(huì)介紹具體怎么實(shí)現(xiàn)。

相關(guān)文章

  • IOS 靜態(tài)方法與動(dòng)態(tài)方法詳解

    IOS 靜態(tài)方法與動(dòng)態(tài)方法詳解

    這篇文章主要介紹了IOS 靜態(tài)方法與動(dòng)態(tài)方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS開(kāi)發(fā)使用UITableView制作N級(jí)下拉菜單的示例

    iOS開(kāi)發(fā)使用UITableView制作N級(jí)下拉菜單的示例

    這篇文章主要介紹了iOS開(kāi)發(fā)使用UITableView制作N級(jí)下拉菜單的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 利用iOS開(kāi)發(fā)實(shí)現(xiàn)翻轉(zhuǎn)撲克牌動(dòng)畫(huà)的方法

    利用iOS開(kāi)發(fā)實(shí)現(xiàn)翻轉(zhuǎn)撲克牌動(dòng)畫(huà)的方法

    這篇文章主要給大家介紹了關(guān)于利用iOS開(kāi)發(fā)實(shí)現(xiàn)翻撲克牌動(dòng)畫(huà)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • ios下移動(dòng)文件方法匯總

    ios下移動(dòng)文件方法匯總

    這篇文章主要給大家匯總了一下ios下移動(dòng)文件方法,從簡(jiǎn)單到復(fù)雜,十分的實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • iOS 統(tǒng)計(jì)Xcode項(xiàng)目代碼行數(shù)的實(shí)例

    iOS 統(tǒng)計(jì)Xcode項(xiàng)目代碼行數(shù)的實(shí)例

    下面小編就為大家分享一篇iOS 統(tǒng)計(jì)Xcode項(xiàng)目代碼行數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • iOS如何封裝帶復(fù)制功能的UILabel示例代碼

    iOS如何封裝帶復(fù)制功能的UILabel示例代碼

    如果是在IOS的應(yīng)用方面,很多時(shí)候我們需要封裝UILabel,下面這篇文章主要給大家介紹了關(guān)于iOS如何封裝帶復(fù)制功能的UILabel的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • iOS開(kāi)發(fā)中runtime常用的幾種方法示例總結(jié)

    iOS開(kāi)發(fā)中runtime常用的幾種方法示例總結(jié)

    Runtime也就是所謂的“運(yùn)行時(shí)”,因?yàn)槭窃谶\(yùn)行時(shí)實(shí)現(xiàn)的。下面這篇文章主要給大家介紹了關(guān)于iOS開(kāi)發(fā)中runtime常用的幾種方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • 詳解IOS11新特性之larget title的實(shí)現(xiàn)

    詳解IOS11新特性之larget title的實(shí)現(xiàn)

    本篇文章主要介紹了詳解IOS11新特性之larget title的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 教你如何解決XCODE升級(jí)后插件不能用問(wèn)題

    教你如何解決XCODE升級(jí)后插件不能用問(wèn)題

    Xcode 每次更新有個(gè)很頭疼的問(wèn)題,就是插件都會(huì)失效,要重裝。 不得不說(shuō)好多插件還是非常方便能提高效率。那么如何來(lái)解決這個(gè)問(wèn)題呢,今天我們就來(lái)探討下。
    2015-11-11
  • iOS 下的圖片處理與性能優(yōu)化詳解

    iOS 下的圖片處理與性能優(yōu)化詳解

    這篇文章主要介紹了iOS 下的圖片處理與性能優(yōu)化詳解,幫助大家更好的理解和學(xué)習(xí)使用ios開(kāi)發(fā),感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論

山阴县| 花莲县| 肃宁县| 株洲县| 鹰潭市| 中卫市| 加查县| 疏勒县| 永济市| 宝应县| 游戏| 杭州市| 南投市| 辽中县| 遂溪县| 宕昌县| 渝中区| 万州区| 阜阳市| 成安县| 邵阳市| 乐至县| 壶关县| 土默特右旗| 若尔盖县| 汾阳市| 康定县| 岚皋县| 阿坝县| 滁州市| 育儿| 突泉县| 全椒县| 仁化县| 龙州县| 云霄县| 嘉祥县| 日喀则市| 牡丹江市| 平阴县| 凤山市|