所以我正在開始減少我的意大利麪代碼。如何從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