实战教程·什么年代了还在敲传统木鱼?(二)(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

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


相关文章
|
10月前
|
存储 安全 容器
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
58 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
|
10月前
|
iOS开发
实战教程·什么年代了还在敲传统木鱼?(一)(1)
实战教程·什么年代了还在敲传统木鱼?(一)
64 1
|
10月前
|
存储 数据库 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
63 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
|
10月前
|
数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
46 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
|
10月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
41 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(1)
|
10月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
55 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
|
10月前
|
程序员 人机交互 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
63 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
|
10月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)
52 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)
|
10月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
53 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
|
10月前
|
程序员 iOS开发
实战教程·什么年代了还在敲传统木鱼?(一)(3)
实战教程·什么年代了还在敲传统木鱼?(一)
71 0