2010-04-14 4 views
2

Как избежать ненужного освобождения? Я бегу этот код:Анимационные спрайты в Cocos2d

CCSpriteFrameCache * cache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
    [cache addSpriteFramesWithFile:@"boosttexture.plist"]; 

    CCAnimation * animation = [[CCAnimation alloc] initWithName:@"boosting" delay:1/24.0f]; 

    [animation addFrame:[cache spriteFrameByName:@"ship.png"]]; 
    [animation addFrame:[cache spriteFrameByName:@"ship_boost_l_r.png"]]; 

    id action = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation]]; 
    [spaceShipSprite runAction:action]; 

Когда animaton работает (данность - его уродливым один), я получаю это в консоли:

2010-04-14 13: 40: 16.311 Booster2K10Beta [521: 20b] cocos2d: deallocing CCSpriteFrame = 00EBA620 | TextureName = 4, Rect = (1.00,32.00,32.00,32.00)

2010-04-14 13: 40: 16.411 Booster2K10Beta [521: 20b] cocos2d: deallocing CCSpriteFrame = 00EBA620 | TextureName = 4, Rect = (1.00,32.00,32.00,32.00)

2010-04-14 13: 40: 16.496 Booster2K10Beta [521: 20b] cocos2d: deallocing CCSpriteFrame = 00EBA620 | TextureName = 4, Rect = (1.00,32.00,32.00,32.00)

Непонятно, что тот же SpriteFrame получает dealloc'ed 24 раза в секунду - как этого избежать?

ответ

1

Я предполагаю, что у вас есть CCDEBUG, повернутый до 2. Верните его на 1. Это CCLOGINFO, которое вы видите. Тем не менее, используйте инструменты профилирования Xcode, чтобы убедиться, что память удалена. Я делаю ставки. Вы просто видите то, что еще не поняли.