我在4个按钮中有4张图片:imag01.jpg
,imag02.jpg
,imag03.jpg
,imag04.jpg
和4种声音:sound01.aifc
,sound02.aifc
, sound03.aifc
,sound04.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 }})。
如何在按钮和声音之间建立链接?
答案 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];
是否与用户按下的按钮相同。