所以我正在开始减少我的意大利面代码。如何从NSMutableArray设置实例变量?
所以现在,我有11个不同的恐龙图像,我已经使用“for”循环放入NSMutableArray。我还宣布了CCSprite实例变量,我希望我可以设置每个恐龙图像,以便我可以检查边界框,设置位置等。所以我将每个对象从数组指向一个实例变量。到目前为止,我已经验证码:
.h文件中:
CCSprite *dinosaur1_c;
CCSprite *dinosaur2_c;
CCSprite *dinosaur3_c;
CCSprite *dinosaur4_c;
CCSprite *dinosaur5_c;
CCSprite *dinosaur6_c;
CCSprite *dinosaur7_c;
CCSprite *dinosaur8_c;
CCSprite *dinosaur9_c;
CCSprite *dinosaur10_c;
CCSprite *dinosaur11_c;
.m文件
NSMutableArray *dinoSprites = [[NSMutableArray alloc] init];
for(int i = 1, j = 0; i <= 11 && j <= 10; i++, j++)
{
id dino = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"dinosaur%d-c.png", i]];
[dinoSprites addObject:dino];
[sceneSpriteBatchNode addChild:dino];
}
dinosaur1_c = (CCSprite *)[dinoSprites objectAtIndex:0];
dinosaur2_c = (CCSprite *)[dinoSprites objectAtIndex:1];
dinosaur3_c = (CCSprite *)[dinoSprites objectAtIndex:2];
dinosaur4_c = (CCSprite *)[dinoSprites objectAtIndex:3];
dinosaur5_c = (CCSprite *)[dinoSprites objectAtIndex:4];
dinosaur6_c = (CCSprite *)[dinoSprites objectAtIndex:5];
dinosaur7_c = (CCSprite *)[dinoSprites objectAtIndex:6];
dinosaur8_c = (CCSprite *)[dinoSprites objectAtIndex:7];
dinosaur9_c = (CCSprite *)[dinoSprites objectAtIndex:8];
dinosaur10_c = (CCSprite *)[dinoSprites objectAtIndex:9];
dinosaur11_c = (CCSprite *)[dinoSprites objectAtIndex:10];
这段代码的工作,但我敢肯定,它可以减少。我将如何使用“for”循环来设置这些实例变量中的每一个?
我使用这些实例变量的其它方法,设置位置,检查碰撞/相交,淡入等
我把等效代码更好地解释我想要做的事:
NSMutableArray *dinoSprites = [[NSMutableArray alloc] init];
for(int i = 1, j = 0; i <= 11 && j <= 10; i++, j++)
{
id dino = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"dinosaur%d-c.png", i]];
[dinoSprites addObject:dino];
[sceneSpriteBatchNode addChild:dino];
// Set instance variables
dinosaur%i_c = (CCSprite *)[dinoSprites objectAtIndex:j];
}
有没有办法实现我所要求的?经过2.5个小时的搜索,我仍然没有任何东西。只需找到动画帧的解决方案。
我是否缺少一些小东西或者我应该有不同的方法来指向数组中的每个图像来设置它们的位置,淡入淡出,检查包围盒等?
任何想法/输入非常感谢!感谢您抽时间阅读! :D
使用CCSprites的数组而不是不同的变量.. – Nilesh 2012-03-06 10:53:49