我试图运行一个操作,但是我想确定哪一个。比如我有在变量名称后面添加一个整数以访问
[bullet runAction:bullet1];
我希望能够操纵它的访问 像
[bullet runAction:bullet%d, i];
我试图运行一个操作,但是我想确定哪一个。比如我有在变量名称后面添加一个整数以访问
[bullet runAction:bullet1];
我希望能够操纵它的访问 像
[bullet runAction:bullet%d, i];
使用的动作数组变量,并使用索引来访问它们
NSArray bulletActions = @[bullet1, bubble2];
[bullet runAction:bulletActions[0]];
我认为它会满足您的需求
你能解释什么是bullet1和bubble2,以及如何runAction:调用bulletActions [0]? – 2013-03-08 11:53:11
@Anoop bullet1,bulle2等。我想他们是CCAction,我猜他有很多动作,并且通过索引来运行它们,所以这是我提出的解决方案将它们存储在一个数组中,runAction和bulletActions [0]将在这种情况下运行bullet1 – Ultrakorne 2013-03-08 12:01:03
我没有太多想法关于CCActions :( – 2013-03-08 12:05:18
你不能做什么你正在试图做的问题,而不是传递一个子弹对象的数组,并传递给你想要访问该数组元素的值。
您需要使用selector
SEL selector=NSSelectorFromString([NSString stringWithFormat:@"bullet%d", i]);
[self performSelector:selector];
从这里就可以调用一个方法命名为bullet1
,buttet2
等,如果i
提供为1,2等
-(void)bullet1{
[email protected]"bullet 1 called";
}
-(void)bullet2{
[email protected]"bullet 2 called";
}
-(void)bullet<your integer value>{
[email protected]"bullet <your integer value> called";
}
这是正确的,但他不应该使用这种设计来做他在做的事情,使用运行时功能对此不是一个不错的选择,但+1无论如何 – Ultrakorne 2013-03-08 11:52:03
@Ultrakorne:你能解释为什么我们不应该使用动态方法调用?我知道Obj-C的活力使它比许多其他语言更好。 – 2013-03-08 11:55:15
,因为他只是想要一个索引访问变量的集合,这就是这么简单,我不觉得需要过度复杂。 – Ultrakorne 2013-03-08 12:01:56
编辑:对不起,后看着我的回答,我看到了一些缺陷,并将其写为更好的方法来实现这一目标。
这样做的最佳结果是创建一个包含所有操作的数组。即
NSArray actionArray = [[NSArray alloc] initWithItems:bullet1, bullet1, bullet3, nil];
然后你就可以运行创建一个方法来运行的操作:
- (void)bulletAction:(int)numberToRun {
[bullet runAction:[actionArray objectAtIndex:numberToRun]];
}
这可以通过使用代码调用:
[self bulletAction:0];
其中0是什么号码,你想跑步。
wt是你的问题? – iPatel 2013-03-08 11:34:00
我不认为这是可能的。也许你可以用标签来代替。 – aqua 2013-03-08 11:34:06
@aqua:这当然是可以的。 – 2013-03-08 11:51:36