数据Cocos2d-x常用功能-Cocos2d-x常用工具:计时器、数据读写、文件读写(共6部分)

news/2024/7/7 7:21:00

第三阶段:常用功能5

1.Cocos2d-x计时器
每一帧执行的时候执行一次
#include "cocos2d.h"

class HelloWorld : public cocos2d::Layer
{
   
   
private :
    cocos2d::LabelTTF *label;
   
public :
   
// there's no 'id' in cpp, so we recommend returning the class instance pointer
   
static cocos2d::Scene* createScene();

   
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
   
virtual bool init(); 
   
   
// a selector callback
   
void menuCloseCallback(Object* pSender);
   
   
// implement the "static create()" method manually
    CREATE_FUNC(HelloWorld);
   
   
virtual void update( float dt);
   
    void timerHandler(float dt);
};

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
   
// 'scene' is an autorelease object
   
auto scene = Scene::create();
   
   
// 'layer' is an autorelease object
   
auto layer = HelloWorld::create();

   
// add layer as a child to scene
    scene->addChild(layer);

   
// return the scene
   
return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
   
//
   
// 1. super init first
   
if ( !Layer::init() )
    {
       
return false ;
    }
   
    Size visibleSize = Director::getInstance()->getVisibleSize();
   
    label = LabelTTF::create(
"jikexueyuan" , "Courier" , 30 );
    addChild(label);
   
    schedule(schedule_selector(HelloWorld::timerHandler),
1 );
   
//    scheduleUpdate();
   
return true ;
}

void HelloWorld::timerHandler( float dt){
    log(
">>>>>" );
}


void HelloWorld::update( float dt){
   
    label->setPosition(label->getPosition()+Point(
1 , 1 ));
   
   
if (label->getPositionX()> 500 ) {
        unscheduleUpdate();
    }
}


void HelloWorld::menuCloseCallback(Object* pSender)
{
    Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit( 0 );
#endif
}

2.Cocos2d-x首选项数据读写
会在本地生成一个文件,就算应用程序关闭掉 下一次打开的时候还可以访问到这个数据
//    UserDefault::getInstance()->setStringForKey("data", "Hello jikexueyuan");
   
    //如果访问不到 data 就会输出默认值 Hello World
    log( "%s" ,UserDefault::getInstance()->getStringForKey( "data" , "Hello World" ).c_str());
    
3.Cocos2d-x文件读写
iphone或者ipad模拟器运行   文件的路径
/Users/niezhao/Library/Developer/CoreSimulator/Devices/DB075D5C-5BFB-4DB7-B908-54F321B519CB/data/Containers/Data/Application/F890EE4B-A397-4020-BEC1-49B55E49D850/Documents/
MAC模拟器运行   文件的路径 /Users/niezhao/Documents/
    auto fu = FileUtils::getInstance();
//写出
//    FILE *f = fopen(fu->fullPathFromRelativeFile("data.txt", fu->getWritablePath()).c_str(), "w");
//    fprintf(f, "Hello jikexueyuan\n");
//    fclose(f);
  //读取  
    Data d = fu->getDataFromFile(fu->fullPathFromRelativeFile( "data.txt" , fu->getWritablePath()));
    //打印内容
    log( "%s" ,d.getBytes());
   
   
   
//    log("%s",fu->getWritablePath().c_str());

4.Cocos2d-x的plist文件
创建plist文件:New File—resource—Property List  实质是一个XML文件
    FileUtils *fu = FileUtils::getInstance();
// 如果根节点是dictionary  
    ValueMap vm = fu->getValueMapFromFile("data.plist");
//如果根节点是array就要用 ValueMap vm = fu->getValueVectorFromFile("data.plist");

    log("%s",vm["name"].asString().c_str()); //也可以用 vm.at() 这里 ()中传一个key 
5.Cocos2d-x的xml数据操作
创建xml文件:New File—other—Empty 输入 文件名.xml
<data>
   
<p name = "ZhangSan" age = "10" />
   
<p name = "LiSi" age = "11" />
</data>

#include <tinyxml2/tinyxml2.h>
#include
<json/reader.h>
#include <json/document.h>
//创建文档
    auto doc = new tinyxml2::XMLDocument();
/解析
    doc->Parse(FileUtils::getInstance()->getStringFromFile( "data.xml" ).c_str());
//获取根节点
    auto root = doc->RootElement();
 //遍历全部子对象       for循环的判断条件 e!=NULL可以写成e
    for ( auto e = root->FirstChildElement(); e; e=e->NextSiblingElement()) {
       
        std::string str;
       //遍历当前子对象的所有属性
        for ( auto attr = e->FirstAttribute(); attr; attr=attr->Next()) {
            str+=attr->Name();
            str+=
":" ;
            str+=attr->Value();
            str+=
"," ;
        }
       
        log(
"%s" ,str.c_str());
    }
 sibling /'sɪblɪŋ/ n. 兄弟姊妹;民族成员 sibling nodes 同级节点   
6.Cocos2d-x的json数据操作
创建json文件:New File—other—Empty 输入 文件名.json

[{"name":"ZhangSan","age":20},{"name":"LiSi","age":19}]

#include <json/rapidjson.h>
#include <json/document.h>
    rapidjson::Document d;
//0代表默认的解析方式
    d.Parse< 0 >(FileUtils::getInstance()->getStringFromFile( "data.json" ).c_str());
   //强制转换成int类型    0为索引 name为属性    .GetString()字符串
    log("%s",d[(int)0]["name"].GetString());
数组用[]   对象{} 对象之间用逗号隔开


http://www.niftyadmin.cn/n/3585848.html

相关文章

lvs架构

lvs 4种模式 1、nat(网络地址转换模式) 2、dr(直接路由模式) 3、tun(隧道模式) 4、full-nat(双向转换模式) 1&#xff0c;nat&#xff08;网络地址转换模式架构&#xff09; 1、nat模式优势是&#xff0c;后端可以是任意支持tcp/ip的操作系统&#xff0c;缺点是响应时回包必须…

容器:用empty来代替检查size()是否为0

对于任意容器c&#xff0c;写下 if (c.size() 0)... 本质上等价于写下 if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好&#xff0c;特别是事实上empty的典型实现是一个返回size是否返回0的内联函数。 你应该首选empty的构造&#xff0c;而且理由很…

nginx 代理 负载均衡 网站转接的用法

反向代理 1&#xff0c;准备两台nginx真实服务器 a、nginx-1 启动网站(内容)&#xff08;作为网站服务器&#xff09; b、nginx-2 启动代理程序 一、编辑nginx-2的配置文件 [rootnginx-server ~]# vim /etc/nginx/conf.d/default.conf server {server {listen 80; ser…

LNMP+zabbix监控平台搭建

前言 由于某个项目需要新搭建zabbix监控平台。于是就抽时间总结了zabbix搭建的流程及排错的详细流程。由于每个人的生产环境的差异&#xff0c;本文适用于参考。 实际上&#xff0c;使用yum安装配置LAMPzabbix更加的方便&#xff0c;快捷。但是&#xff0c;为了便于管理&#…

PHP生成图像验证码的方法小结(2种方法)

本文实例讲述了PHP生成图像验证码的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 1、生成加法运算验证码图片 ?123456789101112131415161718192021222324252627282930session_start ();/*定义头文件为图片*/header("Content-type: image/png");/*生…

尽量使用区间成员函数代替它们的单元素兄弟

尽量使用区间成员函数来代替单元素兄弟的三个可靠的论点&#xff1a; 1、区间成员函数更容易写&#xff0c; 2、它们更清楚地表达你的意图&#xff0c; 3、而且它们提供了更高的性能。 快&#xff01;给定两个vector&#xff0c;v1和v2&#xff0c;使v1的内容和v2的后半部分…

源码安装软件参数查询

前言 下面总结的是对部分已源码安装的软件&#xff0c;查看其编译参数的方法。 常用于软件升级或安装扩展模块 【1】Nginx 编译参数查询 命令&#xff1a; /apk/install/nginx/sbin/nginx -V注意&#xff1a;nginx命令位置取决于nginx的安装目录 nginx version: nginx/1.17.1 …

linux提示Warning: imagettftext(): Could not find/open font错误

在php中imagettftext — 用 TrueType 字体向图像写入文本了&#xff0c;在其它版本中没有问题唯独在linux中使用imagettftext时出现imagettftext(): Could not find/open font错误了&#xff0c;具体我们来看解决办法。(PHP 4, PHP 5, PHP 7) imagettftext — 用 TrueType 字体…