好的。我正在开始一个新的 Cocos2D 模板,试图弄清楚 CCMenuAdvanced 是如何工作的。从没有物理的 Cocos2D 2.1 b2 项目开始,将 CCMenuAdvanced.h 和 CCMenuAdvanced.m 文件添加到我的项目中,从 HelloWorldLayer.m 初始化方法中删除样板代码,一切运行正常。黑屏。在我看来,我应该导入了所有库,当我输入与 CCMenuAdvance 相关的任何内容时,它会自动完成,所以看起来工作正常。这是我在 HelloWorldLayer 初始化方法中的所有内容:
CCMenuItemImage *scrollableSprite = [CCMenuItemImage itemWithNormalImage:@"640x2272ScrollableImage.png"
selectedImage:@"640x2272ScrollableImage.png"
target:self
selector:@selector(iDunnoYet)];
正如预期的那样,它编译并运行时带有未使用的变量“sprite”警告,但运行良好。一旦我将这行代码添加到项目中,期望得到另一个未使用的变量错误(菜单):
CCMenuAdvanced *menu = [CCMenuAdvanced menuWithItems:scrollableSprite, nil];
我收到此错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CCMenuAdvanced", referenced from:
objc-class-ref in HelloWorldLayer.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已经注释掉了那一行,它构建并运行良好。我已经阅读了可能引发此错误的两件不同的事情:1)我在我的项目中两次导入了一个文件或库,以及 2)我没有在我的构建设置中正确包含必要的库。首先,我检查了我的标题,它们看起来很好。我只在我的 HelloWorldLayer.h 文件中 #imported CCMenuAdvanced.h 文件。其次,它是一个 Cocos2D 模板,无需上述代码行即可正常工作,所以我认为所有必要的库都应该已经包含在内。
无论如何,如果有人能指出我正确的方向,我将不胜感激。提前致谢。当然,如果需要,我可以提供更多代码。