从4个带图像的自定义按钮中选择一个按钮

时间:2013-04-19 15:08:07

标签: ios objective-c uiimageview uibutton arc4random

我在4个按钮中有4张图片:imag01.jpgimag02.jpgimag03.jpgimag04.jpg和4种声音: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)并要求用户按下正确的声音按钮({{1 }})。

如何在按钮和声音之间建立链接?

3 个答案:

答案 0 :(得分:1)

请参阅此问题的答案,以生成0到3之间的随机数:Generating random numbers in Objective-C

如果您不打算将按钮从零开始索引,只需在结果中添加一个。

答案 1 :(得分:1)

这样做:

  • 将0到3之间的不同值分配给每个按钮的tag属性。

  • 将声音放入数组中。

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

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

  • 如果按钮的tag属性与您选择的号码匹配,HOORAY!干得好,用户好!

  • 其他,太糟糕了!再试一次。

答案 2 :(得分: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];是否与用户按下的按钮相同。