2010-10-09 3 views
2

J'ai reçu 0 réponse de la part du conseil de Cocos2D donc j'ai pensé essayer ici.Iphone Cocos2D - SpriteSheet Cocos2D (tellement confus ...)

Ok. J'arrache mes cheveux par-dessus. J'ai fait une refonte complète de mon code la nuit dernière dans l'espoir de résoudre certains problèmes de framerate iphone4. J'ai créé des sprites à l'avance au lieu de faire une partie de la création pendant les méthodes de mise à jour. Je les ajoute seulement au spritesheet maintenant dans la méthode de mise à jour comme nécessaire.

Cependant, cela n'a vraiment pas résolu le problème. J'ai donc changé une chose par curiosité. Ma feuille de sprite principale est 2048x2048 et contient 24 cadres et un cadre statique. J'avais l'habitude de tirer mon image statique des cadres que j'ai générés en utilisant spriteWithSpriteFrameName. Au lieu de cela j'ai juste décidé de faire un autre fichier d'image pour cela et le créer à partir de cela. Question Framerate résolu la plupart du temps ... Je ne comprends pas pourquoi. Je pensais que la texture était déjà en mémoire pour commencer? Quelque chose ne va pas avec mon code?

circleSpriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"spritesheetbase.png"]; 

    //Load Note Animations 
    for (int i = 0; i < 25; i++) 
    { 
      int x = i % 5; 
    int y = i/5; 

    CCSpriteFrame* frame = [[CCSpriteFrame alloc] initWithTexture:circleSpriteSheet.textureAtlas.texture rect:CGRectMake(x * 200, y * 200, 200, 200)]; 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrame:frame name:[NSString stringWithFormat:@"noteFrame%d.png", i]]; 
    [frame release]; 
    } 

    CCSprite *s = [CCSprite spriteWithFile:@"staticRing.png"]; 
    //CCSprite *s = [CCSprite spriteWithSpriteFrameName:@"noteFrame0.png"]; <--- Old way I used to create it 

Si quelqu'un pouvait m'aider, je serais dans votre dette! Je suis tellement confus.

+0

Que se passe-t-il exactement? –

+0

J'avais des problèmes de framerate. Je suis curieux de savoir pourquoi spriteWithSpriteFrameName causait un tel retard lorsque la texture et les cadres sont déjà en mémoire. Quelque chose ne va pas avec la façon dont je fais des feuilles de sprites? Ceci est dans la dernière version de Cocos2d, beta3 – Arbel

+0

Je pense que vous ne faites que mettre en cache et ne pas l'utiliser, puis dessiner quelque chose qui n'est pas mis en cache. Je pourrais avoir tort cependant. –

Répondre

1

J'ai rencontré des problèmes de performances lors de la création/exécution en mode débogage. Essayez de construire/exécuter en mode release et voyez si cela vous permet de résoudre vos problèmes de débit d'images. Cette résolu un problème cadre taux similaire dans ce post:

water effect in cocos2d

J'espère que cela arrive à le résoudre pour vous aussi!