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));
}

代码解释

  1. 数字转字符串:使用sprintf函数将整数i转换为字符串存储在str数组中。
  2. 文件名拼接:通过strcpystrcat函数将基础文件名、数字字符串和文件后缀拼接成完整的文件名。
  3. 日志输出:使用log函数输出相关信息,包括文件名、字符大小和指针大小。
  4. 动画操作:设置动画的每帧延迟时间,并将对应的精灵帧添加到动画中。

读取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>

代码解释

  1. 创建字典对象:使用Dictionary::createWithContentsOfFile函数从指定的XML文件创建字典对象。
  2. 获取数据:通过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;
}

代码解释

  1. 函数重载:提供了两个重载的getAnimation函数,分别接受字符指针数组和std::string数组作为参数。
  2. 动画创建:使用Animation::create函数创建动画对象,并设置每帧延迟时间。
  3. 添加精灵帧:通过循环遍历数组,从精灵帧缓存中获取指定名称的精灵帧并添加到动画中。最后返回创建好的动画对象。

作者信息

boke

boke

共发布了 1025 篇文章