-1

我有一个应用程序,共有 32 张随机出现的图像;

我希望这样,如果用户没有购买特定的升级,那么只有阵列中的前 16 个(仅 f1.png - f16.png)会显示,但是如果他们购买了购买,那么所有 32将随机提供。

允许所有图像的应用内 ID 是;

com.myphotofun.upgrade16more & com.myphotofun.complete

调用随机数组的代码是;

-(void)randImage
{
    NSArray *myImageNames = [NSArray arrayWithObjects:@"f1.png", @"f2.png", @"f3.png",@"f4.png",@"f5.png",@"f6.png",@"f7.png",@"f8.png",@"f9.png",@"f10.png",@"f11.png",@"f12.png",@"f13.png",@"f14.png",@"f15.png",@"f16.png","f17.png","f18.png","f19.png","f20.png","f21.png","f22.png","f23.png","f24.png","f25.png","f26.png","f27.png","f28.png","f29.png","f30.png","f31.png","f32.png",nil];

           int index = arc4random() % [myImageNames count];

    UIImage *myImage = [UIImage imageNamed:[myImageNames objectAtIndex:index]];

    [PaintingImage setImage:myImage];
}

现在改为(感谢 guenis);

-(void)randImage
{

NSInteger index = arc4random_uniform([[NSUserDefaults standardUserDefaults] boolForKey:PRODUCT_PURCHASED] ? 32 : 16);

UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:@"f%d.png",index +1]];

    [PaintingImage setImage:myImage];

}

任何代码帮助将不胜感激。谢谢,

克里斯

4

2 回答 2

0
-(void)randImage
{
    NSArray *myImageNames = [NSArray arrayWithObjects:@"f1.png", @"f2.png", @"f3.png",@"f4.png",@"f5.png",@"f6.png",@"f7.png",@"f8.png",@"f9.png",@"f10.png",@"f11.png",@"f12.png",@"f13.png",@"f14.png",@"f15.png",@"f16.png","f17.png","f18.png","f19.png","f20.png","f21.png","f22.png","f23.png","f24.png","f25.png","f26.png","f27.png","f28.png","f29.png","f30.png","f31.png","f32.png",nil];

    NSInteger index = arc4random_uniform([[NSUserDefaults standardUserDefaults] boolForKey:PRODUCT_PURCHASED] ? 32 : 16);

    UIImage *myImage = [UIImage imageNamed:[myImageNames objectAtIndex:index]];

    [PaintingImage setImage:myImage];
}

购买产品时不要忘记设置值

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:PRODUCT_PURCHASED];
[[NSUserDefaults standardUserDefaults] synchronize];

此外,如果您的图像的命名与您显示的完全一样,我宁愿使用动态字符串访问它们,而不是将它们存储在 nsarray 中:

    NSInteger index = arc4random_uniform([[NSUserDefaults standartUserDefaults] boolForKey:PRODUCT_PURCHASED] ? 32 : 16);

    UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:@"f%d.png",index + 1]];
于 2013-05-03T00:33:30.827 回答
0

嗨,你可以试试这个

    - (void)randImage {

    int items = isPurchased ? 32 : 15;

    NSMutableArray *images = [[NSMutableArray alloc] init];

    for (int i = 1; i <= items; i++) {
        [images addObject:[NSString stringWithFormat:@"f%i.png", i]];
    }

    int index = arc4random() % [images count];

    UIImage *myImage = [UIImage imageNamed:[images objectAtIndex:index]];
    [PaintingImage setImage:myImage];

    //Check if it works
    NSLog(@"%@", [images objectAtIndex:index]);
    NSLog(@"%i", images.count);
}

已经测试过了

祝你好运

于 2013-05-03T07:33:20.087 回答