1
我想通過使用CCSpriteBatchNode來減少OpenGL調用和內存使用的次數。Cocos2D 2.0 - 使用CCSpriteBatchNode,CCMenuItem和CCmenu
我需要創建使用此代碼CCMenu:
CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"atlasGeral.png"];
CCSprite *inputNormal = [CCSprite spriteWithSpriteFrameName:@"normalInput.png"];
CCSprite *inputPressed = [CCSprite spriteWithSpriteFrameName:@"PressedInput.png"];
[batchNode addChild:inputNormal];
[batchNode addChild:inputPressed];
CCMenuItem *input =
[CCMenuItemSprite itemWithNormalSprite:inputNormal
selectedSprite:inputPressed
target:self
selector:@selector(InputMenu:)];
CCMenu *mInputMenu = [CCMenu menuWithItems:input, nil];
這與消息斷言失敗catrastophically轟然 - [CCMenuItemSprite的addChild:Z:標籤:]
任何線索?順便說一句,有人可以創建或指向一些教程,正確解釋如何將這個CCSpriteBatchNode與CCMenus,CCMenuItems等其他元素一起使用嗎?幾乎所有最重要的功能都沒有Cocos2D文檔。
謝謝。
謝謝。對於我看到的這些CCSpriteBatchNode遠非真正有用的東西。它們的使用非常有限,並且存在很多問題。或許,唯一的解決方案是創建我自己的CCMenu類的類! – SpaceDog
如果圖像相當大,或者大多數圖像被縮放和旋轉,CCSpriteBatchNode可以是一個巨大的性能節省。由於精靈批處理節點沒有其他限制,只允許將精靈作爲子節點,所以儘早將它們融入到您的設計中。 – LearnCocos2D
@ LearnCocos2D - 就您提到的用例達成一致,前提是您並未嘗試在圖層中的不同zOrder上交織來自多個紋理的圖形對象。我可能錯過了如何向一個圖層添加多個批處理節點,但是所有的子精靈都被引用到一個唯一的z軸(該圖層)。 – YvesLeBorg