当函数体与执行体分离完毕后,我们开始解析执行体代码如下
对于函数执行体,内部有2-6 和8 这个模块,我们利用一个musicArray来记录对应的音效,用timeArray记录执行时间,对于number为3,4,5 的时候,我们可直接把对应音效和时间分别添加至musicArray与timeArray。当进入循环体的时候,我们需要将循环内容用一个array存储起来,递归解析,函数也是如此。
当音效与时间解析完毕之后,我们可以进入播放模式了。
首先我们创建一个播放类,便于控制我们将它做成单利
预加载音效(建议直接在appdelegate中调用)
播放按钮点击(带暂停与播放功能)
此处曲子的播放也可以采用播放完当前的音效再创建并播放下一的方案,不过由于operationQueue对线程的控制很友好,此处我决定采用一次性创建任务,播放与暂停交给operationQueue来控制。
获得播放状态后,就开始播放曲子,(此处我通过代理方法告知vc中按钮的状态,因为如果在播放中,我重新编了一首曲子来播放,vc中按钮是很难直接得到当前的状态的)