实战教程·什么年代了还在敲传统木鱼?(二)(1)

简介: 实战教程·什么年代了还在敲传统木鱼?(二)

实战教程·什么年代了还在敲传统木鱼?(二)


前提回顾

在上一章节中,我们完成了“电子木鱼”项目的基础部分,包含基础的UI样式、交互逻辑和动画效果。这一章节,我们来实现“电子木鱼”App的声音播放、自定义设置页面及其交互逻辑。

音频准备:木鱼敲击声

当每次点击木鱼的时候,电子木鱼App都需要发出“咚”的敲击声。我们在网上可以找到并下载木鱼敲击声,下载好的文件拖入到项目中,如下图所示:

image.png

在此请记住下载的音频的时长(通常为1秒),以及文件名称、文件后缀名(通常为mp3、m4a),在之后的代码中需准确调用。

紧接着,我们来实现音频播放相关的代码。音频播放需要使用到一个新的框架:AVFoundation。

AVFoundation是苹果在iOS和OS X系统中,用于处理基于时间的媒体数据的Objective-C框架,供使用者来开发媒体类型的应用程序。

AVFoundation框架可以用来实现播放声音的效果,首先需要在项目中引入AVFoundation框架,由于是Apple自带的框架,可以直接在项目中import导入,如下代码所示:

import AVFoundation

为了项目方便,我们可以创建一个新的Swift文件来放置播放音频的相关代码。创建一个新的Swift文件,命名为AudioPlayer。在AudioPlayer文件中,引入AVFoundation框架,预设一个播放器,然后创建一个方法来使用播放器,如下代码所示:

import AVFoundation
import Foundation
import SwiftUI
var soundPlayer: AVAudioPlayer?
func playAudio(forResource: String, ofType: String) {
    let path = Bundle.main.path(forResource: forResource, ofType: ofType)!
    let url = URL(fileURLWithPath: path)
    do {
        soundPlayer = try AVAudioPlayer(contentsOf: url)
        soundPlayer?.play()
    } catch {
        print("音频文件出现问题")
    }
}

image.png

上述代码中,我们预先创建了一个播放器soundPlayer,然后创建了一个方法playAudio播放声音,传入两个参数,forResource用于确定所需播放的音频文件的文件名称,ofType为文件的后缀名。

确定后参数后,将两个参数值给到路径path,再把路径给到地址url,便于后面播放器使用。在代码中使用声音播放器AVAudioPlayer播放声音,如果尝试执行失败则打印输出错误信息。

完成后,回到Content文件,在点击木鱼时调用playAudio方法,如下代码所示:


playAudio(forResource: "dong", ofType: "mp3")

image.png

在预览窗口敲击了一下,效果不错(不禁笑出了声)。


目录
打赏
0
0
0
0
75
分享
相关文章
【软件设计师-从小白到大牛】上午题基础篇:第一章 计算机组成与体系结构(3)
检错是指可以检查出错误;纠错是指可以在检查出错误的基础上纠正错误。
92 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
语法分析阶段可以发现程序中的所有语法错误;编译正确的程序必然不包含语法错误;“除数为0”为动态语义错误,动态语义错误只有运行时才能发现。
187 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础
57 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)
实战教程·什么年代了还在敲传统木鱼?(一)(1)
实战教程·什么年代了还在敲传统木鱼?(一)
124 1
实战教程·什么年代了还在敲传统木鱼?(一)(2)
实战教程·什么年代了还在敲传统木鱼?(一)
132 0
实战教程·什么年代了还在敲传统木鱼?(二)(2)
实战教程·什么年代了还在敲传统木鱼?(二)
64 0
实战教程·什么年代了还在敲传统木鱼?(二)(3)
实战教程·什么年代了还在敲传统木鱼?(二)
78 0
实战教程·什么年代了还在敲传统木鱼?(一)(3)
实战教程·什么年代了还在敲传统木鱼?(一)
151 0
【软件设计师-从小白到大牛】上午题基础篇:第一章 计算机组成与体系结构(2)
说明:重点记忆此图。一般而言,CISC和RISC都支持流水线技术,但是CISC不适合采用流水线技术
98 0
【软件设计师-从小白到大牛】上午题基础篇:第一章 计算机组成与体系结构(1)
其他知识 计算机中CPU对其访问速度最快的是 通用寄存器。 VLIW 是超长指令字的简称。
84 0