使用SlidingMenuGrid.mm后,Cocos2d库导入搞砸了?

时间:2012-02-16 10:42:25

标签: iphone menu cocos2d-iphone

我一直在使用(http://brandonreynolds.com/blog/2011/01/09/cocos2d-sliding-menu-grid/)提出的SlidingMenuGrid.mm并在(http://www.cocos2d-iphone.org/forum/topic/12477)中讨论过。它在我从头开始做的游戏项目上运行得很好。

不幸的是,我接着尝试将它添加到现有的源代码中,从(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'

很奇怪,因为父类返回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 个答案:

答案 0 :(得分:1)

只需在此处删除“返回”以修复错误:

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

问题不仅仅是cocos2d版本差异,还有编译器设置。特别是如果项目使用Apple LLVM Compiler x.x,您将获得更准确(以及更多)的警告和错误,这通常是一件好事。