2

我在 4 个按钮中有 4 个图像:imag01.jpgimag02.jpgimag03.jpgimag04.jpg4 个声音:sound01.aifcsound02.aifcsound03.aifcsound04.aifc

我正在生成 4 个这样的按钮:

UIButton *oneButton = [UIButton buttonWithType:UIButtonTypeCustom];
[oneButton setTitle:@"1" forState:UIControlStateNormal];
[oneButton setTitle:@"1" forState:UIControlStateHighlighted];

[oneButton setImage:[UIImage imageNamed:@"imag01.jpg"] forState:UIControlStateNormal];
[oneButton setImage:[UIImage imageNamed:@"imag01.jpg"] forState:UIControlStateHighlighted];
oneButton.frame = CGRectMake(20, 100, 140, 100);

[scrMain addSubview:oneButton];

我想生成一个从 1 到 4 的随机数(例如 3),播放与其相关的声音(sound03.aifc)并要求用户为该声音按下正确的按钮(imag03.jpg)。

如何在按钮和声音之间建立联系?

4

3 回答 3

1

请参阅此问题的答案以生成 0 到 3 之间的随机数:在 Objective-C 中生成随机数

如果你不打算从零开始索引你的按钮,你可以简单地在结果中加一。

于 2013-04-19T15:15:30.593 回答
1

做这个:

  • tag为每个按钮的属性分配从 0 到 3 的不同值。

  • 将声音放入数组中。

  • 生成一个介于 0 和 3 之间的随机整数,包括 0 和 3。使用它作为索引从数组中检索声音。播放那个声音。

  • 启用 4 个按钮并要求用户点击相应的按钮。

  • 如果tag按钮的属性与您选择的数字匹配,万岁!干得好,用户!

  • 否则,太糟糕了!再试一次。

于 2013-04-19T15:16:02.260 回答
1

这实际上用 NSArray 很容易做到。为了便于理解,让我们创建两个数组。

一种用于图像,一种用于声音。

NSArray* buttonImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"imag01.jpg"],
                      [UIImage imageNamed:@"imag02.jpg"],[UIImage imageNamed:@"imag03.jpg"][UIImage imageNamed:@"imag04.jpg"],  nil];

NSArray* buttonSounds = [NSArray arrayWithObjects:[same idea as the uiimage, i don\'t know what you are using to load sound],  nil];

然后使用 arc4random 生成随机数:

int randomNumber = arc4random()%4;

然后使用你刚刚生成的数字调出图像和声音并将其应用到 uibutton

UIImage* image = [buttonImages objectAtIndex:randomNumber];
[oneButton setImage:image forState:UIControlStateNormal];

再次对声音做同样的事情,并根据randomNumber我们刚刚生成的相同附加声音的属性。只需确保图像阵列和声音阵列根据哪个图像是正确的声音排列。

我无法为您编写生成随机声音的代码,因为我不明白您是如何加载声音的。所以我以 UIImages 为例。因此,为了指出正确的方向,将 UIImage 代码替换为声音代码,以应用相同的想法。

要检查声音是否匹配,我会检查是否[buttonSound objectAtIndex:randomNumber];等于附加到用户按下的按钮的那个。

于 2013-04-19T15:22:53.513 回答