【问题标题】:How do I make a button play sounds in a certain order using an array?如何使用数组使按钮按特定顺序播放声音?
【发布时间】:2011-08-29 20:59:37
【问题描述】:

我正在为 iPhone 编写 Objective-C 代码,我正在尝试创建一个播放一系列声音的数组。例如我第一次按下按钮我希望它播放声音“0.wav”,但第二次我希望它播放“1.wav”,然后“2.wav”“3.wav”等。然后当我总共播放了14个声音(最多“13.wav”)时,我想要循环以 0.wav 重新开始播放。我环顾 Google 和 Apple 开发文档将近 4 天,但运气不佳。因此,如果有人可以帮助我为此生成代码,将不胜感激,如果您不介意,您可以尝试简要解释代码,以便我可以了解每个部分的作用。

谢谢你,乔伊


编辑

好的,我已经完成了 Array 部分(感谢 Thomas),但是我们都不确定如何将 soundID 从数组实现到我播放声音的动作以及如何播放该声音。如果对您的答案有帮助,我使用了 Thomas 在下面用于他的数组的格式。

谢谢,乔伊

【问题讨论】:

  • 您是否正在寻求帮助,了解如何让按钮在每次按下时访问数组的新元素,或者如何获取 .wav 文件并播放它?
  • 嗯,我真的很想问如何实现,就像如何访问数组的新元素,然后在一个简单的步骤中播放该新元素。

标签: objective-c iphone arrays audio


【解决方案1】:

首先,创建不同声音的数组和一个变量来保存当前索引:

NSArray *sounds = [[NSArray alloc] initWithObjects:@"0.wav", @"1.wav", nil]; // add all your files here
NSUInteger currentSound = 0;

然后,当您处理您的按钮点击事件时,转到下一个声音并播放它。如果它位于 NSArray 的末尾,请返回索引 0:

currentSound++;
if (currentSound >= [sounds count]) {
    currentSound = 0;
}

// play the sound. Just call your own method here
[self playSoundWithFilename:[sounds objectAtIndex:currentSound]];

【讨论】:

  • 我应该把这些代码放在哪里。我目前在“viewDidLoad”中有第一个,在按下按钮播放声音时我调用的第二个在我的动作中。这是一个空白。应该是 IBAction 吗?我是否需要在我的头文件中声明任何内容,或者是否全部在框架中预先完成。另外,如何使用从数组中获得的结果播放声音文件?我不确定如何将数组的当前值用作文件 soundID。
  • viewDidLoad 对于第一部分可能没问题。确保在 dealloc 中释放 NSArray。您的操作可以返回 void,我认为您基本上需要 IBAction 来告诉 Interface Builder 这是一个操作。我了解 IBAction 相当于 void。不确定播放声音,我没有这方面的经验。
  • 好的,感谢您的帮助。这肯定有很大帮助,我会四处询问有关播放声音的问题。
猜你喜欢
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多