2012-02-16 37 views
0

我一直在使用由(http://brandonreynolds.com/blog/2011/01/09/cocos2d-sliding-menu-grid/)提供並在(http://www.cocos2d-iphone.org/forum/topic/12477)中討論的SlidingMenuGrid.mm。它對我從頭開始做的遊戲項目非常有效。使用SlidingMenuGrid.mm後,Cocos2d庫導入混亂了嗎?

不幸的是,我然後試圖將其添加到現有的源代碼,從(http://www.apress.com/9781430233039)書,並沒有奏效。第一個問題是,在CCMeu.h以下列舉並沒有宣佈,所以我不得不將它們添加:

typedef enum { 
    kCCMenuStateWaiting, 
    kCCMenuStateTrackingTouch 
} tCCMenuState; 

enum { 
    //* priority used by the menu for the touches 
    kCCMenuTouchPriority = -128, 

    //* priority used by the menu for the mouse 
    kCCMenuMousePriority = -128, 
}; 

然後,編譯錯誤得到了降低,我留下了以下錯誤:

/Classes/SlidingMenuGrid.mm:117: error: return-statement with a value, in function returning 'void' 

很奇怪,因爲父類返回的是無效的,甚至更多,在另一個項目中插入的相同的庫工作正常,不會抱怨(代碼是相同的)。

這裏是SlidingMenuGrid.mm線117以供參考:

-(void) addChild:(CCMenuItem*)child z:(int)z tag:(int)aTag 
{ 
    return [super addChild:child z:z tag:aTag]; 
} 

我想這個問題可能與cocos2d的由示例文件的源代碼包含的版本做。因此,我刪除了「CocosDenshion」,「Cocos2d」,「cocoslive」和「FontLabel」文件夾,並用另一個項目替換了它們。不幸的是現在我得到32個編譯錯誤..沒有一個:) ..第一個是

/Classes/GameScene.h:36:「CCLabel」

它看起來有望符限定符列表前:錯誤對我來說,就像我對圖書館更加混亂一樣。然後,我清理了項目和所有目標並重新編譯,但沒有更改。我試過幾次我在這裏發佈這個消息..我有點卡住..抱歉..

感謝您閱讀..

回答

1

只需刪除「返回」這裏修復錯誤:

-(void) addChild:(CCMenuItem*)child z:(int)z tag:(int)aTag 
{ 
    [super addChild:child z:z tag:aTag]; 
} 

這些問題不僅僅是cocos2d版本差異,還包括編譯器設置。特別是如果一個項目使用Apple LLVM Compiler x.x,您會得到更準確(更多)的警告和錯誤,這通常是件好事。

+0

感謝您的建議,最終並非由於此原因.. CCLabel出現問題,無法識別(我必須用CCLabelTTF替換CCLabel)。當我嘗試在我的練習中使用一些代碼示例時,我也這麼做了。我不知道是不是因爲編譯器。我不知道這個選擇,因此取代了代碼。我可以試試嗎?順便說一句,我想感謝你寫的這本偉大的書,我全讀了這本書,並且非常高興你發佈的材料數量。 – mm24 2012-02-22 07:58:40