cocos2d_x_04_计时器_数据存储

一、计时器的使用

效果图:点击屏幕,移动头像至指定位置后,停止计时器

类型为SEL_SCHEDULE实质是一个函数指针,指向的是Ref的一个成员方法,参数float,返回值void

场景的.h头文件

场景类的实现.cpp文件

关键代码:

//
//  UpdateScene.cpp
//  01_cocos2d-x
//
//  Created by beyond on 14-10-5.
//
//

#include "UpdateScene.h"
USING_NS_CC;
Scene* UpdateScene::createScene()
{
    // 'scene' 自动释放
    // 创建一个scene
    auto scene = Scene::create();
    // 'layer' 自动释放
    auto layer = UpdateScene::create();
    // 将图层 添加到场景中
    scene->addChild(layer);
    // 返回 填充好图层的 场景
    return scene;
}

// 在 "init" 方法中,实例化自己要用的精灵对象
bool UpdateScene::init()
{
    // 1. 调用父类的init , cpp 没有super,直接写父类名
    if ( !Layer::init() ) return false;
    // 屏幕尺寸
    winSize = Director::getInstance()->getVisibleSize();

    // 添加 一个精灵,点击屏幕后,精灵在update方法中 更改位置
    addSprite();

    // 添加一个LabelTTF,点击文字后,在updatePosition方法中 更改位置
    addLabelTTF();
    return true;
}
#pragma mark - 初始化
// 添加一个精灵,点击屏幕后,精灵在update方法中 更改位置
void UpdateScene::addSprite()
{
    // 精灵精灵Nana
    nana = Sprite::create("nanaLogo.png");
    nana->setAnchorPoint(Point(0,0));
    nana->setPosition(Point(0,0));
    this->addChild(nana);

    // 2.触摸屏幕,开启 时钟update

    // 实例化一个触摸监听器 对象
    auto listener = EventListenerTouchOneByOne::create();
    // 当触摸开始时,绑定一个闭包函数;
    // 【】表示 要传入的外界对象,此处是this
    // ()表示参数
    listener->onTouchBegan = [this](Touch *t,Event *e){
        // 开启默认的 时钟方法
        scheduleUpdate();
        return false;
    };
    // 5、获取事件分发器,添加一个事件监听器,到this身上;即监听的是this对象【整个图层Layer】
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

}
// 添加一个LabelTTF,点击文字后,在updatePosition方法中 更改位置
void UpdateScene::addLabelTTF()
{
    // Label
    label = LabelTTF::create("Nana","Courier",90);
    label->setAnchorPoint(Point(0,0));
    label->setPosition(Point(0,0));
    label->setName("label");
    addChild(label);

    // 2.触摸Label,开启 时钟updatePosition
    // 实例化一个触摸监听器 对象
    auto listener = EventListenerTouchOneByOne::create();
    // 当触摸开始时,绑定一个闭包函数;
    // 【】表示 要传入的外界对象,此处是this
    // ()表示参数
    listener->onTouchBegan = [this](Touch *t,Event *e){
        // 如果 点击 了label,才每隔一秒执行一次 更新位置方法
        LabelTTF *label =(LabelTTF *) e->getCurrentTarget()->getChildByName("label");
        if (label->getBoundingBox().containsPoint(t->getLocation())) {
            // 开启指定时间的 时钟方法;参数是:函数指针,返回值是void,参数是float,指向的是Ref内的一个方法
            schedule(schedule_selector(UpdateScene::updatePosition), 1);
        }
        return false;
    };
    // 5、获取事件分发器,添加一个事件监听器,到this身上;即监听的是this对象【整个图层Layer】
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

}
#pragma mark - 时钟方法
// 时钟方法,使用的是默认的帧率 1/60
void UpdateScene::update(float dt)
{
    // 向右上角,移动nana,当位置大于 400时,stop
    nana->setPosition(nana->getPosition()+Point(3,3));
    if (nana->getPosition().x>400) {
        // 停止时钟方法
        unscheduleUpdate();
    }

}

// 时钟方法,使用的是 1秒1次
void UpdateScene::updatePosition(float dt)
{
    // 向右上角,移动nana,当位置大于 400时,stop
    label->setPosition(label->getPosition()+Point(50,50));
    if (label->getPosition().x>300) {
        // 停止所有时钟方法
        unscheduleAllSelectors();
    }

}

二、用户偏好UserDefault

三、FileUtils文件操作工具类

它屏蔽了不同的平台mac ios android等

FileUtils文件写出和读入演示

如果是Mac平台,则可用目录就是:【/Users/beyond/Documents/

如果是iOS平台,则可用目录就是:【.../app/Documents/

四、Plist文件读取

使用的依然是FileUtils工具类

返回的类型是:字典【ValueMap】

数组【ValueVector】

五、XML文件读取

六、JSON文件读取

时间: 2024-10-06 11:13:02

cocos2d_x_04_计时器_数据存储的相关文章

安卓开发_数据存储技术_sqlite

一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 二.SQLite特性 1 2 1.轻量级 3 SQLite和C\S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器.使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能.而且那个动态库的尺寸也相当小. 4 2.独立性 5 SQLite数据库的核心引擎本身

iOS开发_数据存储方式

对于数据持久化的问题,博主并不准备在博文内放很多的代码进行更深一步解释,只是简单的介绍一下四种数据持久化,如有时间,会另外针对各个数据持久化的方法进行更进一步的阐述. 直接进入主题: 〈1.NSUserDefault 用来存储配置信息,开发者可以通过这个实例对象,对这些已有信息进行修改,也可以根据自己的需求创建新的配置项.这是一个系统的单例,是一个轻量级存储机制,一般用来存储用户的登录状态,一般不会用来存储复杂对象. 〈2.SQLite 用于查询需求较多的数据,擅长处理的数据类型其实与NSUse

安卓开发_数据存储技术_SharedPreferences类

SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. 有两种方式可以获得SharedPreferences对象 1.getSharedPreferences():  如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称. 对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象 2.get

android(9)_数据存储与访问3_scard简介

使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的.对于像视频这样的大文件,我们可以把它存放在SDCard. SDCard是干什么的?你可以把它看作是移动硬盘或U盘. 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件). 创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下: 在D

android数据存储_概述

andorid提供了六种方式存储永久的数据,根据需求来使用不同的存储方式,例如是否对于应用程序时私有还是公有,数据存储的空间等. 六个存储方式: 使用SharedPreferences: 这种方式是使用键值对来存储私有的数据 内部存储: 在设备的内存中存储私有数据 外部存储: 在SD卡或其他的外部存储来存储公有数据 SQLite数据库: 在私有的数据库中存储私有的结构花数据 网络存储: 在网络服务中存储数据 私有数据一般情况下不能被访问,但是可以通过content provider来进行对数据的

android数据存储_内部存储

源码下载(免下载积分):下载 你可以直接存储数据到内部存储中,默认情况下,文件存储到内部存储中是私有的,不能被 其他程序访问,当卸载应用程序,这些文件会被移除. 创建并写入数据可以有两种方法: 使用java中的相关的方法, 使用android.content中的相关方法,  调用 openFileOutput(),并返回FileOutputStream对象 调用FileOutputStream对象的write()方法 关闭流 读文件也是基本相同的方式. 在读文件有一点小技巧:如果想在编译时保存一

android数据存储_外部存储

源码下载(免下载积分):下载 外部存储并不是一定可以访问的,例如外部存储挂载到电脑上是,或者是SD Card作为外部存储,被移除是,因此在访问外部存储时,一定要保证外部存储是可以获得的.判断外部存储是否已经挂载到了手机上可以这样判断: //判断外部存储是否可以访问,并且可以读写 private boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Enviro

16_Android的数据存储_ SharedPreference、XML和JSON

1. Android读写首选项 1.1 SharedPreferences SharedPreferences 是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,通常用来存储一些简单的配置信息,其存储位置在/data/data/<包名>/shared_prefs目录下. SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.本例程讲解 SharedPreference 数据的读写操作. 1 package

SQL SERVER大话存储结构(3)_数据行的行结构

一行数据是如何来存储的呢? 变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢? 对表格进行增减列,修改长度,添加默认值等DDL SQL,对行存储结构又会有怎么样的影响呢? 什么是大对象,什么是行溢出,存储引擎是如何处理它们呢? 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! 1 引入 在一个DB内,每一个table都能在sys.sysobjects中找到对应的描述,每一个列,都能从