2012-03-09 58 views
0

这是非常简单的问题,但我真的很难与它。如何指向特定的CCSprite而不传递给方法?

我做了一个方法,它采用int变量。有了它,它将需要使用它来与CCSprite进行操作。

举个例子,我用这个来调用它:[_hud hideThisActionLed:2];它应该隐藏名为actionLed2的CCSprite。

我无法将实际的CCSprite传递给该方法,因为我从另一个无法访问该特定精灵的类调用它。

我可以用这个:[NSString stringWithFormat:@"actionLed%d", actionLedNumber]使精灵名称,但不能想出一种方法来使用它指向该指定的CCSprite。

以下是我宣布HUD类精灵:

actionLed1 = [CCSprite spriteWithFrameName:@"actionLed1.png" setScale:TRUE resetAnchor:TRUE]; 
[actionLed1 setOpacity:0]; 
[self addChild: actionLed1 z:11 tag:1]; 

这X4所有4个LED。

+0

它们只是普通的CCSpri我在其他课程(我用'[_hud hideThisActionLed:2];'调用的那个)中声明的tes。这是一个新的HUD类,它显示所有的信息,健康状况,转数等。 – Liuhu 2012-03-09 14:37:56

+0

有许多可能的方式来访问精灵。你能编辑你的问题并发布你用来声明和添加这些精灵的代码吗? – sch 2012-03-09 14:50:27

回答

1

这取决于如何可以访问不同的LED。

如果他们是你的类中的属性,那么你可以像这样访问他们:

NSString *actionLedName = [NSString stringWithFormat:@"actionLed%d", actionLedNumber]; 
CCSprite *actionLed = [self valueForKey:actionLedName]; 

如果它们被存储在一个数组,那么你可以像这样访问他们:

CCSprite *actionLed = [self.actionLeds objectAtIndex:actionLedNumber]; 

如果您在添加时为每个actionLed设置了标签,那么您可以像这样访问它们:

CCSprite *actionLed = [self getChildByTag:actionLedNumber]; 
+0

第一种方法有效。谢谢!第二种说法是“不兼容的指针类型使用'CCNode *'类型的表达式初始化'CCSprite *'。 – Liuhu 2012-03-09 15:17:51

0

将CCSprite对象添加到图层时,请使用withTag选项。然后你可以通过标签号来引用精灵,这是你传入到hideThisActionLed方法中的数字。

[_hud addChild:ledSprite withTag:1]; [_hud addChild:ledSprite2 withTag:2]; 等等

-(void)hideThisActionLed:(int)ledNum { 
CCSprite *theSprite = [_hud getChildByTag:ledNum]; 
... hide the sprite ... 
相关问题