Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 随机显示精灵图像_Xcode_Cocos2d Iphone - Fatal编程技术网

Xcode 随机显示精灵图像

Xcode 随机显示精灵图像,xcode,cocos2d-iphone,Xcode,Cocos2d Iphone,您好,目前我的游戏正在从fl_food.plist加载fl_gfood.png或fl_bfood.png。这很好,但现在我有17个坏食物项目.png和17个好食物项目.png。我的问题是如何随机显示每组17项中的一项?我能为精灵png文件名做一个通配符吗?请参阅下面的代码注释。还有人建议我可以将.plist文件名加载到一个数组中,然后随机选择一个名称,这将如何实现 @implementation Food + (void)loadAssets { static dispatch_onc

您好,目前我的游戏正在从fl_food.plist加载fl_gfood.png或fl_bfood.png。这很好,但现在我有17个坏食物项目.png和17个好食物项目.png。我的问题是如何随机显示每组17项中的一项?我能为精灵png文件名做一个通配符吗?请参阅下面的代码注释。还有人建议我可以将.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;
}
@
+(无效)装载资产{
静态调度一次;
一次发送(一次发送)^{
[[FLSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:[AssetPer GetDeviceSpecificFileName for:@“fl_food.plist”];
});
}
-(id)init{
self=[super init];
如果(自我){
self.size=CGSizeMake(16*高分辨率,16*高分辨率);
self.offset=CGPointMake(8*高分辨率,8*高分辨率);
self.removeAfterCollision=是;
self.collidable=否;
自我评分=10分;
}
回归自我;
}
-(FLSprite*)雪碧{
如果(_sprite==nil){
如果(自我评分<10){
_sprite=[FLSprite SpriteWithPriteFrameName:@“fl_gfood.png”];//fl_gfood.*.png…我可以这样做吗?
}否则{
_sprite=[FLSprite spritewithpriteframename:@“fl_bfood.png”];
}
}
返回精灵;
}
我会使用arc4random()和stringByAppendingString

- (FLSprite *)sprite {
    if(_sprite == nil) {
        NSString *disFood;

        disFood = (self.score < 10) ? @"fl_gfood" : @"fl_bfood";

        //random # between 1 - 10
        int randNum  = (arc4random() % 10)+1;

        NSString *formattedName = [NSString stringWithFormat:@"_%i.png",randNum];

        disFood = [disFood stringByAppendingString:formattedName];

        _sprite = [FLSprite spriteWithSpriteFrameName:disFood]; 

        NSLog(disFood);//Logging disFood String;
    }
    return _sprite;
}
-(FLSprite*)精灵{
如果(_sprite==nil){
NSString*不吃东西;
失食=(自我评分<10)@“食物”:“食物”;
//随机#介于1-10之间
int randNum=(arc4random()%10)+1;
NSString*formattedName=[NSString stringWithFormat:@“\u%i.png”,randNum];
disFood=[disFood stringByAppendingString:formattedName];
_雪碧=[FLSprite SPRITEWITHPRITEFRAMENAME:disFood];
NSLog(disFood);//记录disFood字符串;
}
返回精灵;
}

只需创建一个函数,该函数可以随机返回精灵的名称,或根据您想要的任何条件返回精灵的名称。@setrio您可以演示并举例说明如何执行该操作吗?检查arc4random,使用所有图像名称构建一个数组,并使用arc4random为该数组生成idx。只需在给定的idxSpent 6小时内返回数组内容,运气不好,有人能帮我提供一个示例代码吗?我的应用程序挂起,没有错误。这个怎么样,我有另一个plist,它有34个文件名,我只想把34个文件中的一个随机加载到frameName中。我想这会更简单?很抱歉,我忘了将disFood设置为附加字符串,如下所示:
disFood=[disFood stringByAppendingString:[NSString stringWithFormat:@“\u%I.png”,randNum]_雪碧=[FLSprite SPRITEWITHPRITEFRAMENAME:disFood]我在上面的回复中也对其进行了编辑。(这次进行了测试和工作)