2010-11-07 5 views
0

J'ai un tableau mutable de CCLabels. Lorsque je crée le tableau d'étiquettes, je mets la couleur de l'étiquette noire à l'aide:Changement de couleur sur un CCLabel

label.color = ccc3(0,0,0); 

A différents points que je veux changer la couleur d'une étiquette donnée.

J'ai essayé la méthode suivante, sans succès.

-(void)updateLabel:(CCLabel*)l{ 
     [l setColor: ccc3(1.0,1.0,0.0)]; 
    } 

Je sais que j'ai un pointeur valide à l'étiquette parce que si je change la méthode de

[l setString:@"test"]; 

Il change correctement les étiquettes. Mais la couleur ne change pas. Je ne vois rien dans la documentation pour suggérer que la couleur soit immuable une fois réglée. Alors, est-ce que quelqu'un sait ce qui pourrait se passer?

Répondre

0

Si vous regardez à travers la documentation de superclasse de CCLabel, CCSprite, vous verrez ceci:

Ligne : http://www.cocos2d-iphone.org/api-ref/0.99.0/_c_c_sprite_8h_source.html

Ce qui signifie qu'une fois qu'un objet est créé , vous ne pouvez pas définir le color, il est strictement en lecture seule.

+0

cela fonctionne dans les nouvelles versions cocos très bien (mais prend des valeurs d'octets) – Nixarn

1

Il ne prend pas de flottants, il prend des valeurs de byte. Donc, ce qui suit fonctionnera:

label.color = ccc3(255, 255, 0); 

or 

[label setColor: ccc3(255, 255, 0)]; 
-1
//create Label like this 
CCLabelBMFont *lblInfo = [CCLabelBMFont labelWithString:@"Multi Color Label" fntFile:@"SSPro.fnt"]; 

then, you can Access the character using Index path. 

    for (i=starting index; i<ending index; i ++) { 

     CCSprite *charSprite = (CCSprite *)[[lblInfo children] objectAtIndex:i]; 
     charSprite.color = [CCColor redColor]; 
    } 
set or change the color of character. 
Questions connexes