cocos2d 使用遇到的问题和解决办法

[TOC]

Q 1: 如何解决中文乱码?

A1: 直接看正确的示例代码,杂七杂八的代码太多,跟上版本的是下面这个

xml文件

1
2
3
4
<dict>  
<key>HelloWorldStringkey>
<string>你好,世界string>
dict>

解析xml文件的代码。需要注意按键值获取中文内容保存为char*指针后,用于创建的label类是CCLabelTTF,而不是Label.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//利用CCDictionary来读取xml    
CCDictionary *strings = CCDictionary::createWithContentsOfFile("strings.xml");//载入资源文件夹的strings.xml
//读取HelloWorld键中的值objectForKey根据key,获取对应的string
const char *HelloWorld = ((CCString*)strings->objectForKey("HelloWorldString"))->m_sString.c_str();

//获取屏幕的尺寸、位置信息等
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

//乱码文字
CCLabelTTF *label0 = CCLabelTTF::create("你好,世界","arial",72);
label0->setPosition(ccp(visibleSize.width/2,2*visibleSize.height/3));
this->addChild(label0);

//正常中文
CCLabelTTF *label1 = CCLabelTTF::create(HelloWorld,"arial",72);
label1->setPosition(ccp(visibleSize.width/2,visibleSize.height/3));
this->addChild(label1);

Q2:xml文件资源(字体,图片等等)的放置的正确位置?

A2:xml文件需要放在整个顶级项目文件里头的resources文件夹,而不是放在win32项目的resource…..坑。。具体可以看初始代码引用字体文件的路径。

Q3: 一开始打开项目文件发现文件不可用或者项目文件被卸载?

A3:文件路径被改变,重新解压cocos安装包,重新安装。并且存放路径不能出现中文。

Q4: 编译时出现 libbox.lib不是有效的win32程序?

A4:需要将hellococos项目设置为启动项。

Q5:当出现许多.h 文件不可用的时候?

A5:重定解决方案目标

Q6:本地坐标系和世界坐标系如何互换计算

1
2
3
4
CCPoint p1 = sprite2->convertToNodeSpace(sprite1->getPosition());
CCPoint p2 = sprite2->convertToWorldSpace(sprite1->getPosition());
CCPoint p3 = sprite2->convertToNodeSpaceAR(sprite1->getPosition());
CCPoint p4 = sprite2->convertToWorldSpaceAR(sprite1->getPosition());

计算方法都是用sprite1的坐标去加减sprite2的坐标,针对本地坐标系就用减法,针对世界坐标系就用加法。