首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当播放相同的声音时,目标C-2 8的按钮应该消失。

当播放相同的声音时,目标C-2 8的按钮应该消失。
EN

Stack Overflow用户
提问于 2015-04-10 10:47:59
回答 1查看 51关注 0票数 0

我有一个关于按钮和声音的问题。

我有8个按钮。在加载时,它们应该播放4种声音文件中的1种。每两个按钮相同的声音文件。如果同一声音文件播放在按钮2,按钮1和2将消失。我希望你理解我的问题:)

我现在在那里,按钮可以播放随机声音文件,但我希望每个按钮得到一个随机声音在开始,这应该永远不会改变在这个观点。

希望能得到帮助!

编辑:这是代码

代码语言:javascript
复制
int randomSoundNumber = arc4random() % 4; //random number from 0 to 3

NSLog(@"random sound number = %i", randomSoundNumber);

NSString *effectTitle;

switch (randomSoundNumber) {
    case 0:
        effectTitle = @"bell";
        break;
    case 1:
        effectTitle = @"brake";
        break;
    case 2:
        effectTitle = @"dog";
        break;
    case 3:
        effectTitle = @"bird";
        break;

    default:
        break;
}

SystemSoundID soundID;

NSString *soundPath = [[NSBundle mainBundle] pathForResource:effectTitle ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];

AudioServicesCreateSystemSoundID ((__bridge CFURLRef)soundUrl, &soundID);
AudioServicesPlaySystemSound(soundID);
EN

回答 1

Stack Overflow用户

发布于 2015-04-11 06:43:51

创建一个可变集并向其添加56 NSNumbers (0到55)。生成0到55之间的随机数r,并从集合中得到rth数。这代表了你的第一对按钮。将其从集合中移除,然后再重复三次,每次使用一个较小的集合。现在有4个数字n介于0到55之间,每个数字代表一对数字(b1,b2)。

代码语言:javascript
复制
b1 = n/7; // (integer divide)
b2 = (n-b1*10)/7;
b2 = b1==b2?b2+1;

为什么是56?8个物体共有64个排列。有8个排列重复,所以如果你删除这些,你还有56个数字。这些数字映射到排列01,02,...,07,10,12,.(其中的诱饵已被移除)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29559500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档