我正在使用我的播放列表中的随机声音构建一个SongApp。
我现在有一个包含歌曲的 NSMutableArray 。例如:
NSMutableArray *array=[NSMutableArray
arrayWithObjects:
@"Song1.mp3",
@"Song2.mp3",
@"Song3.mp3",
@"Song4.mp3",
@"Song5.mp3",
@"Song6.mp3",
@"Song7.mp3",
@"Song8.mp3",
@"Song9.mp3",
nil];
int i=0;
for(i=0;i<=[array count]; i++)
{
NSInteger rand=(arc4random() %9);
[array exchangeObjectAtIndex:i
withObjectAtIndex:rand];
}
我将其声明为实例方法。
现在我有很多不同颜色的按钮。每个按钮都应该弹奏一首歌。但每当我调用新视图时,按钮应播放另一首歌。
我希望你理解我:)。
我的问题是:
有什么办法,当我想要时,例如黄色按钮在此视图中超时播放“Song1”,但是当我再次加载View时它会播放“Song5”吗?
我如何说每个按钮播放我的数组? 我只知道
NSString *play = [[NSBundle mainBundle]
pathForResource:@"Song1" ofType:@"mp3"];
NSURL *playURL = [NSURL fileURLWithPath:pewPewPath];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)playURL, & self.song1);
AudioServicesPlaySystemSound(self.song1);
希望您理解我的问题:)
谢谢&amp;最好的问候!
答案 0 :(得分:1)
您可以使用MPMediaPickerController类并使用它的方法从iPod库中获取歌曲。
如果您已经在应用程序中嵌入了文件,只需将索引处的对象传递给音频服务,同时每次都生成一个随机索引。
答案 1 :(得分:1)
如果您使用arc4random()
。然后它会从你的数组中拾取随机索引。你不是预测的。如果你想随机功能将根据你的要求工作,你需要根据你的要求手动编码。
希望这对你有所帮助。
答案 2 :(得分:0)
一种解决方案是使用此代码生成数组范围内的随机数:
int max =5;
int min =1;
int randNum = rand() % (max - min) + min;
然后您可以使用[array objectAtIndex:randNum]
来访问该歌曲。
在你的例子中:
NSString *play = [[NSBundle mainBundle]pathForResource:[array objectAtIndex:randNum] ofType:@"mp3"];
答案 3 :(得分:-1)
首先添加NSMutableArray(shuffle)的项目类别。 互联网有许多不同的变种。例如:https://stackoverflow.com/a/56656/1401067 http://nazcalabs.com/blog/how-to-shuffle-a-nsmutablearray-objective-c/
然后在您的控制器中添加此代码。或者到另一个初始化地点。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.sondsArray shuffle];
}
之后,为所有按钮设置不同的标签。从100(例如)到(100-1 + self.sondsArray)。
最后一步是按下按钮动作处理。所以:
- (IBAction)songButtonPressed:(UIButton *)button
{
[self playSongWithName:sondsArray[button.tag-100]];
}
因此。祝你好运代码=)