我一直在使用(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'之前的预期说明符限定符列表
在我看来,就像我对图书馆更加混乱。然后我清理了项目和所有目标并重新编译但没有改变。我试了几次,在这里我发布了这条消息..我有点卡住了......抱歉..
感谢您阅读..
答案 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,您将获得更准确(以及更多)的警告和错误,这通常是一件好事。