在变量名称后添加一个整数来访问

时间:2013-03-08 11:32:02

标签: objective-c cocos2d-iphone

我正在尝试运行一个动作,但我想决定哪个。例如,我有

[bullet runAction:bullet1];

我希望能够操纵变量访问它

之类的东西
[bullet runAction:bullet%d, i];

4 个答案:

答案 0 :(得分:3)

使用一系列操作,并使用索引访问它们

NSArray bulletActions = @[bullet1, bubble2];
[bullet runAction:bulletActions[0]];

我认为它将满足您的需求

答案 1 :(得分:1)

您需要使用selector

 SEL selector=NSSelectorFromString([NSString stringWithFormat:@"bullet%d", i]);
[self performSelector:selector];

如果bullet1被提供为1,2等,您可以调用名为buttet2i等的方法

-(void)bullet1{
    NSLog@"bullet 1 called";
}


-(void)bullet2{
    NSLog@"bullet 2 called";
}

-(void)bullet<your integer value>{
    NSLog@"bullet <your integer value> called";
}

答案 2 :(得分:1)

编辑:对不起,在看了我的回答之后,我看到了一些瑕疵并将其写成了更好的方法来实现这一目标。

最好的结果是创建一个包含所有操作的数组。即。

NSArray actionArray = [[NSArray alloc] initWithItems:bullet1, bullet1, bullet3, nil];

然后你可以运行创建一个方法来运行动作:

- (void)bulletAction:(int)numberToRun {

     [bullet runAction:[actionArray objectAtIndex:numberToRun]];

}

可以使用以下代码调用:

[self bulletAction:0];

其中0是您想要运行的任何数字。

答案 3 :(得分:0)

你不能在问题中做你想做的事情,而是传递一个子弹对象数组,并传递你想要访问该数组的元素的值。