2016-05-31 13 views
0

Я хочу сделать игру-головоломку cocos2d ios. Для этого я хочу задать customized attribute value в спрайте. Как:set настроить значение атрибута в спрайте в cocos2d ios

В cocos2d ЯШ: (значение, власть, выбрал атрибут)

var sprite = cc.Sprite.createWithSpriteFrame("res/dice.png" ,tileImage[0][randomTile]); 
      sprite.val = randomTile; 
      sprite.power = 0; 
      sprite.picked = false; 
      sprite.setScale(0.55); 
      this.addChild(sprite,1); 
      sprite.setPosition(col*tileSize+tileSize/2,row*tileSize+tileSize/2); 

tileArray[row][col] = sprite; 

Я хочу сделать это в Cocos2D ИОС. Могу ли я это сделать? Как?

Я могу создать спрайт в cocos2d ios как:

CCSprite* ss = [CCSprite spriteWithSpriteFrame:tileImage[0][randomCandy]]; 
    ss.anchorPoint = ccp(0.5, 0.5); 
    ss.scale = 0.55f*appDelegate.deviceScaleFloat*appDelegate.deviceRatinaVariable; 
    ss.position = ccp(layer_posX+col*tileSize+tileSize/2,layer_posY+row*tileSize+tileSize/2); 
    [self addChild:ss z:1]; 

Также я хочу сохранить этот спрайт в 2d массива, хочет получить доступ позже для нахождения этих значения, власти, выбрал

+1

Это свойство называется userObject - используйте его. В cocos2d-js у них были .setUserObject ({...}) и .setUserData ({...}) для этих целей –

ответ

0

Наконец, я нахожу решение этого вопроса.

Я могу сделать это create a sprite object in a cocos touch class. Итак, мой класс объект:

The objectSpriteClass.h definition is: 

#import "CCSprite.h" 

@interface objectSpriteClass : CCSprite 
{ 
    int value; 
    int power; 
    BOOL picked; 

} 

@property(readwrite, assign) int value, power; 
@property(assign, readwrite) BOOL picked; 

- (id)initWithSprite:(int)type; 
@end 

И objectSpriteClass.m определение класса:

#import "objectSpriteClass.h" 

@implementation objectCandy 
@synthesize value, power, picked; 
- (id)initWithSprite:(int)type 
{ 
    if((self=[super init])) 
{ 
    value = 0; // set value 
    power = 1; // set power 
    picked = NO; // set 
    CCTexture *texture=[CCTexture textureWithFile:[NSString stringWithFormat:@"gem-%d.png",type]]; 
    if(texture) { 
     CGRect rect = CGRectZero; 
     rect.size = texture.contentSize; 
     return [self initWithTexture:texture rect:rect]; 
    } 
} 
return self; 
} 

@end 

Затем вы можете создать объект этого класса, как:

objectSpriteClass *spriteArray[20]; 

objectCandy *Obj = [[objectCandy alloc] initWithSprite: 1]; 

    Obj.anchorPoint = ccp(0.5, 0.5); 
    Obj.opacity = 1.0f; 
    Obj.scale = 1.0f; 
    Obj.position = ccp(100, 100); 
    [self addChild:Obj z:1]; 

spriteArray[0] = Obj;