Поворот 64 CCSprites более эффективно? - PullRequest
1 голос
/ 23 августа 2010

У меня есть матрица спрайтов 8 на 8, и мне нужно иметь возможность поворачивать их всех на 90 градусов одновременно. Я сделал это с помощью вложенных циклов for и двухмерного массива указателей спрайтов.

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 ...
}

Ответы [ 2 ]

1 голос
/ 24 августа 2010

По продолжительности вашего действия вы можете видеть, что они вращаются мгновенно или довольно близко.

Кажется, что было бы немного быстрее, если бы вы просто установили вращение вручную:

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

Все еще существует вычисление вращения каждого спрайта, но нет никаких шансов, что ему придется делать это более одного раза во время анимации.

Еще одно соображение, если вы собираетесь делать это только с шагом в 90 градусов, - это иметь спрайты в каждом из 4 поворотов и создавать анимацию кадра. Затем просто выберите кадр соответствующей анимации.

0 голосов
/ 23 августа 2010

Единственное, что я могу сделать на вершине своей головы, это сделать вращение спрайт за спрайтом, чтобы процесс мог распознать и воспользоваться преимуществом предварительной выборки. Было бы полезно больше кода.

...