Как указать на конкретный CCSprite, не передавая его методу? - PullRequest
0 голосов
/ 09 марта 2012

Это довольно простой вопрос, но мне очень трудно с ним справиться.

Я создал метод, который принимает переменную типа int.С этим, это должно было бы использовать это, чтобы сделать действие с CCSprite.

Например, я называю это с этим: [_hud hideThisActionLed:2];, и это должно тогда скрыть CCSprite с именем actionLed2.

Я могуне передать фактический 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 светодиодов.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Это зависит от того, как можно получить доступ к различным светодиодам.

Если они являются свойствами внутри вашего класса, то вы можете получить к ним доступ следующим образом:

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 голосов
/ 09 марта 2012

Когда вы добавляете объекты 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 ...
...