cocos2dx如何拼接格式化字符串
2015年02月11日 10:12
0 点赞
0 评论
更新于 2017-05-09 17:48
拼接格式化字符串示例
在cocos2dx中,我们可以使用以下代码来拼接格式化字符串。以下示例展示了如何生成一系列文件名并进行相关操作:
for (int i = 1; i < 5; i++) {
// 定义一个字符数组用于存储数字的字符串形式
char str[3];
// 将整数i格式化为字符串存储到str中
sprintf(str, "%d", i);
// 定义一个字符数组用于存储完整的文件名
char totalFilename[30];
// 复制基础文件名到totalFilename
strcpy(totalFilename, "game_loading");
// 定义文件后缀
const char* suffix = ".png";
// 将数字字符串追加到基础文件名后面
strcat(totalFilename, str);
// 将文件后缀追加到文件名后面
strcat(totalFilename, suffix);
// 打印完整的文件名
log(totalFilename);
// 设置动画的每帧延迟时间
animation->setDelayPerUnit(0.2f);
// 打印字符数组中单个元素的大小
log("%d", sizeof(str[0]));
// 定义一个字符变量
char t = 'q';
// 打印字符变量的大小
log("char %d", sizeof(t));
// 定义一个浮点型变量
float a = 10.30;
// 打印浮点型变量指针的大小
log("t %d", sizeof(&a));
// 从精灵帧缓存中获取指定名称的精灵帧并添加到动画中
animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(totalFilename));
}
代码解释
- 数字转字符串:使用
sprintf函数将整数i转换为字符串存储在str数组中。 - 文件名拼接:通过
strcpy和strcat函数将基础文件名、数字字符串和文件后缀拼接成完整的文件名。 - 日志输出:使用
log函数输出相关信息,包括文件名、字符大小和指针大小。 - 动画操作:设置动画的每帧延迟时间,并将对应的精灵帧添加到动画中。
读取XML文件
在cocos2dx中,我们可以读取XML文件中的数据。以下是读取XML文件的示例代码:
// 从指定的XML文件创建字典对象
Dictionary* dic = Dictionary::createWithContentsOfFile("chineseString.xml");
// 从字典中获取指定键对应的对象并转换为String类型
String* strchinese = (String*)dic->objectForKey("startGame");
XML文件示例
<?xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
<key>startGame</key>
<string>从XML里面读取的东东</string>
<key>japanese</key>
<string>地方</string>
</dict>
</plist>
代码解释
- 创建字典对象:使用
Dictionary::createWithContentsOfFile函数从指定的XML文件创建字典对象。 - 获取数据:通过
objectForKey方法从字典中获取指定键对应的对象,并将其转换为String类型。
创建动画Animation
在cocos2dx中,我们可以创建动画。以下是创建动画的示例代码:
// 重载的getAnimation函数,接受字符指针数组作为参数
Animation* HelloWorld::getAnimation(const char* stts[], int l, float delay) {
// 创建一个动画对象
Animation* ac = Animation::create();
// 设置动画的每帧延迟时间
ac->setDelayPerUnit(delay);
for (int i = 0; i < l; i++) {
// 从精灵帧缓存中获取指定名称的精灵帧并添加到动画中
ac->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(stts[i]));
}
return ac;
}
// 重载的getAnimation函数,接受std::string数组作为参数
Animation* HelloWorld::getAnimation(const std::string stts[], int l, float delay) {
// 创建一个动画对象
Animation* ac = Animation::create();
// 设置动画的每帧延迟时间
ac->setDelayPerUnit(delay);
for (int i = 0; i < l; i++) {
// 从精灵帧缓存中获取指定名称的精灵帧并添加到动画中
ac->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(stts[i]));
}
return ac;
}
代码解释
- 函数重载:提供了两个重载的
getAnimation函数,分别接受字符指针数组和std::string数组作为参数。 - 动画创建:使用
Animation::create函数创建动画对象,并设置每帧延迟时间。 - 添加精灵帧:通过循环遍历数组,从精灵帧缓存中获取指定名称的精灵帧并添加到动画中。最后返回创建好的动画对象。