我正在做我的第一場比賽,到目前爲止,我唯一的問題是內存使用情況(我沒有支付開發者費用,所以我在模擬器中運行它)。到目前爲止,它已經佔用了大約23MB,從我讀過的內容來看,這是非常重要的。這是真的?首先,在我的主菜單中,我最大的問題是我的背景,它佔用了2MB以上的內存。這可以嗎?其次,我的遊戲背景也佔用2MB +。這可以嗎?第三,我有2個CCSpriteFrameCaches,一個有55個.PNG文件,另一個有12個。有55個圖像的佔用大約9MB的內存。這聽起來很正常嗎?第二個佔用大約3MB。這聽起來很正常嗎?CCSpriteFrameCache或CCSprite? - Cocos2d
55個圖像不會被添加到圖層,直到按下一個按鈕(然後佔用更多的內存大約7MB,不知道爲什麼)。然後,當按下第二個按鈕時,第一個圖像被刪除,第二個圖像被添加。然後,當第一個按鈕再次被按下時,第二個圖像被移除並且第三個圖像被添加(如此等等)。我的問題是使用CCSpriteFrameCache或CCSprite會更好嗎?或者有其他的選擇。
如果有人有更好的方式做到這一點,請讓我知道。任何幫助是極大的讚賞!
示例代碼:
-(void)buttons:(CGPoint)touchLocation {
if (CGRectContainsPoint(leftB.boundingBox, touchLocation) && tapP == YES && paused == NO) {
if (count == 1)
{
isBOP = YES;
count = 2;
} else if (count == 3)
{
[bspriteSheet removeChild:_b cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p3.png"];
[pspriteSheet addChild:_p];
count = 4;
_p.position = ccp(240, 215);
_b = [CCSprite spriteWithSpriteFrameName:@"b2.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
}
if (CGRectContainsPoint(rightB.boundingBox, touchLocation) && tapP == YES && paused == NO) {
if (count == 2)
{
[self removeChild:gb cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p2.png"];
_p.position = ccp(240, 215);
[pspriteSheet addChild:_p];
_b = [CCSprite spriteWithSpriteFrameName:@"b1.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
count = 3;
} else if (count == 4)
{
[bspriteSheet removeChild:_b cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p4.png"];
[pspriteSheet addChild:_p];
count = 5;
_p.position = ccp(240, 215);
_b = [CCSprite spriteWithSpriteFrameName:@"b3.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
}
只是一個提示,使用pvr圖像格式的精靈不需要清晰或高分辨率,因爲他們佔用較少的內存。祝你第一場比賽好運! :) – tallen11 2011-05-02 23:40:17
感謝您的信息! – Jonathan 2011-05-02 23:45:37