NSTimer计时器和声音和音效的播放

时间:2022-03-30 20:35:44
 NSTimer计时器

使用实例代码如下:

// 第一个参数:多长时间会触发一次,以秒为单位

// 第二个参数:如果看到函数的参数有target,一般情况下,都用self

// 第三个参数:SEL,需要调用其他的方法,就是每次时钟被触发的时候,去执行的方法

// 最多可以带一个参数,就是时钟本身

// 第四个参数,暂时不用考虑,设置成nil

// 第五个参数:是否重复,通常会设置YES

_gameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];

在时钟触发方法中,可以使用sender.fireDate获取到时钟被触发的时间

注意:使用NSTimer的时候,千万不要忘记调用invalidate方法关闭时钟。

NSTimer可能不会是及时相应触发时间的,它的执行优先级相对较低,因此,不要使用NSTimer去做实时响应需求较高的周期性操作。

声音和音效的播放

声音

  1. 需要导入AVFoundation框架
  2. 需要从Bundle中加载文件,播放之前需要使用preparePlay方法,准备播放
  3. 可以设置声音的循环次数、音量大小
  4. 播放效率相对略低,但是可以播放较大的声音文件
  5. 导入AudioToolBox框架
  6. 使用C语言的函数直接将音频加载到内存,通过SystemSoundID进行播放
  7. 在播放的时候,不容易中断,也控制不了音量
  8. 播放效率高,通常使用不超过2秒的音频文件
  9. 为了避免同一个音效文件在不同视图控制器中被重复加载,造成无谓的内存消耗,在使用音效时,通常会用一个数据字典进行维护

音效