很棒! 我们现在读到的是最后一章的内容。好样的!现在,你应该能够比较容易地用Cocos2d-x来制作你的游戏了。但是请记住,你的创造力拥有着无限可能。本章涵盖了一些进阶的概念。注意,本章在内容和形式上都变得会更加专业一些。
文件系统访问
尽管你可以使用stdio.h头文件中的函数来访问文件,但这种方式是不太方便的,原因是:你需要激活系统特定的API接口来获取文件的完整地址。在安卓系统上安装之后,资源都被打包成了.apk文件。*希望能够基于分辨率自动加载资源(如一张图片)。
创建FileUtils类正是为解决这些问题。FileUtils是在Resources下访问文件的一个辅助类。它可以文件中读取数据和检查文件是否存在。
读取文件内容的函数
这些函数会读取不同类别的文件并返回不同的数据类型:
| function name | return type | support path type |
| getStringFromFile | std::string | relative path and absolute path |
| getDataFromFile | cocos2d::Data | relative path and absolute path |
| getFileDataFromZip | unsigned char* | absolute path |
| getValueMapFromFile | cocos2d::ValueMap | relative path and absolute path |
| getValueVectorFromFile | cocos2d::ValueVector | relative path and absolute path |
管理文件及目录的函数
这些函数能够管理文件或者目录:
| function name | support path type |
| isFileExist | relative path and absolute path |
| isDirectoryExist | relative path and absolute path |
| createDirectory | absolute path |
| removeDirectory | absolute path |
| removeFile | absolute path |
| renameFile | absolute path |
| getFileSize | relative path and absolute path |
基于HTTP协议的网络
有些时候,从其他的来源获取资源或者数据也可能是有帮助的。通常采用HTTP请求的方法来实现。
搭建HTTP网络有三个步骤:
1.建立一个HttpRequest。
2.建立一个setResponseCallback()回调函数来回应请求。
3.使用HttpClient发送HttpRequest。
HttpRequest拥有四种类型:POST, PUT, DELETE, UNKNOWN。除非指定,默认的类型都是UNKNOWNHTTPClient控制请求的发出,并且通过回叫来接收数据。
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; } // Dump the data 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/