关于Cocos2d-x很多奇怪的报错
1.说什么找不到类和命名空间,但是已经包含头文件
项目-属性-配置属性-C/C++-附加包含目录-编辑-添加新行-写上$(EngineRoot)
2.很多语句报错,但是都没问题
我是这样理解的,书上的代码的编码格式是UTF-8,而我们新建的cocos2d-x的解决方案是用GKB编码打开的,如果直接把文件拷贝过去,文件的编码和解决方案(整个环境)的编码不对,这时候编译起来就会各种错误。
文件-高级保存选项-保存为UTF-8有签名的页面
每个文件的编码格式要一样,不然会报错
其实更好的做法是
文件-高级保存选项-保存为UTF-8无签名的页面,行尾-Windows(CR LF),这么做可以顺便解决中文乱码问题。
3.很多语句莫名其妙报错
可能在一些.h文件里面忘记写USING_NS_CC;
或者一些头文件忘记包含了。
4.某个自己定义的类有红线
这个类可能和系统的类名重复了,改个名字就可以了
5.Cocos2d-X的3.0以后的版本
ccTouchesBegan要改为onTouchesBegan
ccTouchesMoved要改为onTouchesMoved
ccTouchesEnded要改为onTouchesEnded
6.Cocos2d-X的3.0以后的版本
要把CCLayer之类的父类改为Layer
要把CCNode之类的父类改为Node
7.Cocos2d-X的3.0以后的版本
CCSizeMake要改为Size
8.Cocos2d-X的3.0以后的版本
AppDelegate.cpp里面的applicationDidFinishLaunching方法要这样定义
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::createWithRect("See", Rect(0, 0, 960, 640));
director->setOpenGLView(glview);
}
director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
FileUtils::getInstance()->addSearchPath("res");
// create a scene. it's an autorelease object
auto scene = HelloWorld::createScene();
// run
director->runWithScene(scene);
return true;
}
8.Cocos2d-X的3.0以后的版本要把资源放在Resources文件夹下的Res目录里面,或者直接放在Resources文件夹的根目录下并且根目录下不能有Res文件夹
是受了AppDelegate.cpp里面的applicationDidFinishLaunching方法的这句话的影响
FileUtils::getInstance()->addSearchPath("res");
9.可能是已经在.h文件中定义类型的变量,在.cpp中又用auto定义了一遍,这个会造成系统输出:读取位置 0x0000039C 时发生访问冲突等错误,有时候也会造成运行游戏项目的时候弹出停止运行的框框。
.h文件中
Sprite *confirm;
.cpp文件中
auto confirm = Sprite::create();
解决方法:
去掉多余的auto关键词