嗨,目前我的游戏正在从fl_food.plist载入fl_gfood.png或fl_bfood.png。这工作正常,但现在我有17个不好的食品项目.png和17个好的食品项目.png。我的问题是如何随机显示每个组中的17个项目之一?我能为sprite文件名做一个通配符吗?见下面的代码注释。还有人建议我可以将.plist文件名加载到一个数组中并随机选择一个名称,这将如何完成。随机显示精灵图像
@implementation Food
+ (void)loadAssets {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[[FLSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[AssetHelper getDeviceSpecificFileNameFor:@"fl_food.plist"]];
});
}
- (id)init {
self = [super init];
if (self) {
self.size = CGSizeMake(16 * __HIGHRES_SCALE, 16 * __HIGHRES_SCALE);
self.offset = CGPointMake(8 * __HIGHRES_SCALE, 8 * __HIGHRES_SCALE);
self.removeAfterCollision = YES;
self.collideable = NO;
self.score = 10;
}
return self;
}
- (FLSprite *)sprite {
if(_sprite == nil) {
if(self.score < 10) {
_sprite = [FLSprite spriteWithSpriteFrameName:@"fl_gfood.png"]; // fl_gfood_*.png ... Can I do something like this?
} else {
_sprite = [FLSprite spriteWithSpriteFrameName:@"fl_bfood.png"];
}
}
return _sprite;
}
只是要返回精灵随机或者根据您想要的任何条件名称的函数。 – Setrio
@setrio你可以展示并举例说明如何做到这一点? – acctman
检查arc4random,用所有图像名称构建一个数组,并使用arc4random为该数组生成idx。只需返回给定的idx – Setrio