最終效果圖:
音樂播放工具類
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+xKPQzTwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">//
// Sentence.h
// 36_聲詞同步
//
// Created by beyond on 14-9-12.
// Copyright (c) 2014年 com.beyond. All rights reserved.
// 模型,句子
#import
控制器
//
// BeyondController.m
// 36_聲詞同步
//
// Created by beyond on 14-9-12.
// Copyright (c) 2014年 com.beyond. All rights reserved.
//
#import "BeyondController.h"
#import "Sentence.h"
#import "SongTool.h"
@interface BeyondController ()
// 句子對象數組
@property (nonatomic, strong) NSArray *sentenceArr;
// 開始播放就開啟時鐘,監聽 音樂的播放進度
@property (nonatomic, strong) CADisplayLink *link;
// 音樂播放器 可以獲得當前播放的時間 【currentTime】
@property (nonatomic, strong) AVAudioPlayer *sentencePlayer;
@end
@implementation BeyondController
// 懶加載,需要時才創建 時鐘
- (CADisplayLink *)link
{
if (!_link) {
// 綁定時鐘方法
self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
}
return _link;
}
// 懶加載,需要時才創建 句子對象數組,從Plist中的字典數組,轉成對象數組
- (NSArray *)sentenceArr
{
if (!_sentenceArr) {
self.sentenceArr = [Sentence objectArrayWithFilename:@"redStory.plist"];
}
return _sentenceArr;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 工具類播放音樂,並用成員變量記住 創建的播放器對象【可拿到播放的currentTime】
self.sentencePlayer = [SongTool playMusic:@"一東.mp3"];
// 播放背景音樂
[SongTool playMusic:@"Background.caf"];
// 同時,開啟時鐘
[self.link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
}
#pragma mark - 時鐘方法
// 重點~~~~時鐘綁定的方法
- (void)update
{
// 獲取當前播放的位置(第多少秒,比如第10秒)
double currentTime = self.sentencePlayer.currentTime;
// 遍歷,找出對應的一句
int count = self.sentenceArr.count;
for (int i = 0; i