2013-08-07 90 views
0

我想同時縮放一組大約10個精靈。精靈是具有透明背景的不同精靈層。調整(縮放)cocos2d中一組精靈的最快方法

我試圖預先附加所有的精靈首先到圖層並將參考存儲在數組中。之後,當我點擊按鈕,我這樣做: 對不起,這是Javascript,但在Objective-C中它幾乎是一樣的。

attr.zoomAllVisibleSprites = function() { 
    for (var i = 0; i < this.SpriteArray.length; i++) { 
     if (this.SpriteArray[i].isVisible()) { 
      this.SpriteArray[i].setAnchorPoint(cc.PointMake(0.5,0.5)); 
      this.SpriteArray[i].setScale(2, 2); 
     } 
    } 
} 

這個小片段的執行需要我的Android手機約2-3秒,這是太多我的遊戲。有沒有辦法做得更快,優化這段代碼。也許用不同的方式讓精靈可以幫忙?

+0

在iOS的情況下,您碰巧遇到同樣的時間延遲嗎? –

+0

在IOS中沒有更好的..但現在看來,延遲只發生在片段執行的第一次。可能現場還沒裝?或者是什麼 ?我迷路了。 –

回答

0

您可以通過使用for -loop所有CCSprites,這樣的替換你的精靈的數組:

for(CCSprite *sprite in self.view.subviews){ //or scenes or whatever 
     if([sprite isMemberOfClass:[CCSprite class]]){ 
      //Do your thing }} 

也許沒有很多幫助,但你可以ATLEAST溝陣列; d

0

CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGBA4444);

:可能是設備內存耗盡的情況下,嘗試切換到16位的紋理,它可以通過加入這一行開始上做

您也可以進行負載新場景卸載不必要的紋理,這樣的:

CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames(); 
CCTextureCache::sharedTextureCache()->removeUnusedTextures(); 
CCDirector::sharedDirector()->purgeCachedData(); 

如果不工作,那麼它可能是與Open-GL一個問題,在這種情況下,你應該看看this。它對我來說就像一個魔術。

All the Best .. :)