1、Update(时间)
cocos2dx中有三种定时器:schedule,scheduleUpdate,scheduleOnce。
scheduleUpdate这个计时器会按照帧频每一次执行默认的update函数,update函数是继承自父类的虚函数,可以自己重新实现,在实现完成update函数之后,就可以用scheduleUpdate来调用它。
schedule这个计时器,可以自己指定计时器间隔的时间,它有几个版本的重载函数可供选择
void Node::schedule(SEL_SCHEDULE selector)
{
this->schedule(selector, 0.0f, kRepeatForever, 0.0f);
}
void Node::schedule(SEL_SCHEDULE selector, float interval)
{
this->schedule(selector, interval, kRepeatForever, 0.0f);
}
void Node::schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
{
CCASSERT( selector, "Argument must be non-nil");
CCASSERT( interval >=0, "Argument must be positive");
_scheduler->schedule(selector, this, interval , repeat, delay, !_running);
}
三个 版本的函数都有一个共同的参数就是第一个的函数指针,大家可以看下这个参数类型的具体定义就知道了,是一个返回类型为void参数为float的函数指针,也就是通过计时器控制的那个函数的函数指针。之后可以指定时间间隔,重复次数等等的各种参数.
2、文件
C++和c语言一样都有专门对文件操作的函数,但是,在一些移动设备中,有些个目录是不能够进入并且写入文件的。所以COCOS2dx特意封装了一个Fileutils类来帮助我们操纵函数 。
我们编写的每一个cocos2dx程序在不同的平台上运行的时候都会有一个可写入的目录,也就是说,你手机上的一些软件出了自己的目录或者一些其他的目录是不允许去别的目录上写的。
getWritablePath()利用这个方法找到自己的可写入目录,并且通过这个目录与文件名的结合给C++操纵文件的函数fopen指定文件的准确路径,然后在进行写入数据。
auto fu = FileUtils::getInstance();
log("%s", fu->getWritablePath().c_str());
FILE *p = fopen(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()).c_str(), "a+");
fprintf(p, "xuran");
fclose(p);
上面说的都是写入文件,在读文件的时候,cocos2dx就没有那么麻烦了,他定义了一个api叫做getdatafromfile,直接调用这个函数并且填入相应的文件路径即可
Data da = fu->getDataFromFile(fu->fullPathFromRelativeFile("data.txt",fu->getWritablePath()).c_str());
log("%s", da.getBytes());