1

我有一個8×8的精靈矩陣,我需要能夠一次將所有的90度旋轉。我做這件事的方式是使用嵌套for循環,以及一個2維的精靈指針數組。更高效地旋轉64個CCSprites?

for(row = 0;row<9;row++){ 
    for(column = 0;column<8;column++){ 
     [trolls[row][column] runAction:[RotateBy actionWithDuration:0.01 angle:90]]; 
    } 
} 

有沒有更有效的方法呢?在他們旋轉之前似乎有一段時間滯後。

編輯:這裏更多的是我的代碼以方士迴應:

@interface GameLayer : CCLayer { 
    CCSprite *monsters[8][8]; 
    //other code ... 
} 
@property @property (nonatomic,retain) *monsters 
//other code ... 
@end 

@implementation 
@synthesize monsters 

-(void)init { 
    NSString *filename; 
    int row,column,randnum; 
    for(row = 0;row<9;row++){ 
     for(column = 0;column<8;column++){ 
      randnNum =(int)Rand(8); 
      filename =stringWithFormat:@"%d.png",randnNum]; 
      monsters[row][column] = [[[CCSprite alloc] initWithImage:(CGImageRef)filename key:filename] autorelease]; 
     } 
    } 
//other code ... 
} 
+0

爲什麼人們仍然這樣擺放大括號? 爲什麼。 – 2010-08-23 20:24:46

+0

你如何放置它們? – Cassie 2010-08-23 22:15:04

回答

1

它看起來像你的行動持續時間,你希望他們立即旋轉,或非常接近。

看起來這將是一個快一點,如果你簡單地設置手動旋轉:

for(row = 0;row<9;row++){ 
    for(column = 0;column<8;column++){ 
     trolls[row][column].rotation += 90; 
    } 
} 

還有旋轉每個精靈的計算,但沒有機會,那就要做到這一點不止一次在動畫中。

如果你只是以90度的增量進行這個操作,另一個考慮就是在4次旋轉的每一次都有精靈,並進行一幀動畫。然後,只需選擇合適的動畫幀。

+0

所以如果我理解你是對的,你說的是改變雪碧紋理比旋轉它更便宜。它是否正確? – Cassie 2010-08-23 22:13:48

+1

這是,如果它被預加載(一幀動畫)。否則,椰樹每次計算旋轉,然後繪製到屏幕上。 – 2010-08-24 00:05:42

0

的唯一的事情,我可以在我的頭頂事情是做旋轉精靈的精靈使進程可以識別並利用預取。更多的代碼會有幫助。

+0

我不知道「sprite-by-sprite」是什麼意思,是不是在for循環中發生了什麼?我在上面的帖子中添加了精靈聲明和初始化。我不知道還有什麼會有所幫助的。 – Cassie 2010-08-23 20:19:34

+0

哦,對不起,我錯誤地閱讀了你的代碼。我認爲你已經在逐個旋轉它們,而不是精靈0的第0行,精靈1的第0行等。 我建議Jeff B的建議:預加載旋轉或者更改'rotation'屬性。 即使您預先加載所有旋轉,您只會有8 * 8 * 4的變化,因爲它似乎只能旋轉90度。 – 2010-08-24 13:08:44