Cocos2d-x开发者指南12:进阶话题

2015年03月24日 09:45 0 点赞 0 评论 更新于 2025-11-21 14:53

很棒!我们现在进入最后一章的学习。好样的!到目前为止,你应该能够较为轻松地使用Cocos2d-x来开发游戏了。但请牢记,你的创造力是无限的。本章将涵盖一些进阶概念,在内容和形式上会更加专业。

文件系统访问

虽然可以使用 stdio.h 头文件中的函数来访问文件,但这种方式存在不便之处。因为需要激活特定系统的API接口来获取文件的完整地址,例如在安卓系统上安装应用后,资源会被打包成 .apk 文件。同时,开发者可能希望能够基于分辨率自动加载资源(如图片)。

为了解决这些问题,Cocos2d-x创建了 FileUtils 类。它是一个用于在 Resources 目录下访问文件的辅助类,能够从文件中读取数据,并检查文件是否存在。

读取文件内容的函数

这些函数可以读取不同类别的文件,并返回不同的数据类型,具体如下: | 函数名 | 返回类型 | 支持的路径类型 | | --- | --- | --- | | getStringFromFile | std::string | 相对路径和绝对路径 | | getDataFromFile | cocos2d::Data | 相对路径和绝对路径 | | getFileDataFromZip | unsigned char* | 绝对路径 | | getValueMapFromFile | cocos2d::ValueMap | 相对路径和绝对路径 | | getValueVectorFromFile | cocos2d::ValueVector | 相对路径和绝对路径 |

管理文件及目录的函数

这些函数可用于管理文件或目录: | 函数名 | 支持的路径类型 | | --- | --- | | isFileExist | 相对路径和绝对路径 | | isDirectoryExist | 相对路径和绝对路径 | | createDirectory | 绝对路径 | | removeDirectory | 绝对路径 | | removeFile | 绝对路径 | | renameFile | 绝对路径 | | getFileSize | 相对路径和绝对路径 |

基于HTTP协议的网络

在某些情况下,从其他来源获取资源或数据是有帮助的,通常可以通过HTTP请求来实现。

搭建HTTP网络有以下三个步骤:

  1. 创建 HttpRequest 对象:用于封装HTTP请求的相关信息。
  2. 设置响应回调函数 setResponseCallback():当接收到服务器响应时,该回调函数会被调用,用于处理返回的数据。
  3. 使用 HttpClient 发送 HttpRequestHttpClient 负责控制请求的发出,并通过回调接收数据。

HttpRequest 有四种类型:POSTPUTDELETEUNKNOWN。除非特别指定,默认类型为 UNKNOWN

以下是 HttpRequest 的简单使用示例:

HttpRequest* request = new (std::nothrow) HttpRequest();
request->setUrl("http://just-make-this-request-failed.com");
request->setRequestType(HttpRequest::Type::GET);
request->setResponseCallback(CC_CALLBACK_2(HttpClientTest::onHttpRequestCompleted, this));

HttpClient::getInstance()->sendImmediate(request);
request->release();

需要注意的是,当接收到响应时,我们需要指定 setResponseCallback() 方法,以便查看返回的数据并根据需要进行处理。以下是回调函数的示例:

void HttpClientTest::onHttpRequestCompleted(HttpClient* sender, HttpResponse* response)
{
if (!response)
{
return;
}

// 输出响应数据
std::vector<char>* buffer = response->getResponseData();
for (unsigned int i = 0; i < buffer->size(); i++)
{
log("%c", (*buffer)[i]);
}
}

英文原文地址:http://cocos2d-x.org/programmersguide/14/