GVKun编程网logo

cocos2dx的数据保存之UserDault(cocos存档)

21

在本文中,我们将给您介绍关于cocos2dx的数据保存之UserDault的详细内容,并且为您解答cocos存档的相关问题,此外,我们还将为您提供关于Bullet(Cocos2dx)之交叉编译Andr

在本文中,我们将给您介绍关于cocos2dx的数据保存之UserDault的详细内容,并且为您解答cocos存档的相关问题,此外,我们还将为您提供关于Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x、Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D、cocos2d-x 2.2.0 CCUserDefault在安卓系统下不能正确保存的问题、Cocos2d-x 3.2示例UserDefaultTest(用户默认配置)的知识。

本文目录一览:

cocos2dx的数据保存之UserDault(cocos存档)

cocos2dx的数据保存之UserDault(cocos存档)

1、保存数据

void@H_301_5@    setBoolForKey(const@H_301_5@ char@H_301_5@* key,bool@H_301_5@ value@H_301_5@);
void@H_301_5@    setIntegerForKey(const@H_301_5@ char@H_301_5@* key,int@H_301_5@ value@H_301_5@);
void@H_301_5@    setFloatForKey(const@H_301_5@ char@H_301_5@* key,float@H_301_5@ value@H_301_5@);
void@H_301_5@    setDoubleForKey(const@H_301_5@ char@H_301_5@* key,double@H_301_5@ value@H_301_5@);
void@H_301_5@    setStringForKey(const@H_301_5@ char@H_301_5@* key,const@H_301_5@ std::string@H_301_5@ & value@H_301_5@);
void@H_301_5@    setDataForKey(const@H_301_5@ char@H_301_5@* key,Data value@H_301_5@);

2、读取数据,有默认值

bool@H_301_5@    getBoolForKey(const@H_301_5@ char@H_301_5@* key,bool@H_301_5@ defaultValue);
int@H_301_5@    getIntegerForKey(const@H_301_5@ char@H_301_5@* key,int@H_301_5@ defaultValue);
float@H_301_5@    getFloatForKey(const@H_301_5@ char@H_301_5@* key,float@H_301_5@ defaultValue);
double@H_301_5@    getDoubleForKey(const@H_301_5@ char@H_301_5@* key,double@H_301_5@ defaultValue);
std@H_301_5@::string@H_301_5@    getStringForKey(const@H_301_5@ char@H_301_5@* key,const@H_301_5@ std@H_301_5@::string@H_301_5@ & defaultValue);
Data getDataForKey(const@H_301_5@ char@H_301_5@* key,Data defaultValue)

3、读取数据没有默认值

bool    getBoolForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@);
int    getIntegerForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@);
float    getFloatForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@);
double@H_301_5@    getDoubleForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@);
std::string@H_301_5@    getStringForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@);
Data getDataForKey(const@H_301_5@ char@H_301_5@* key@H_301_5@)

Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x

Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x

Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x

分类: cocos2d-x Android 物理引擎 2014-12-30 20:17 86人阅读 评论(0) 收藏 举报
cocos2dx bullet

首先将src文件夹复制到jni文件夹,没有可以新建一个

新建两个文件Android.mkApplication.mk

Application.mk内容如下:

APP_ABI:=armeabiarmeabi-v7ax86

APP_PLATFORM:=android-8

APP_STL:=stlport_static

Android.mk内容如下:

LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

LOCAL_MODULE :=bullet_static(可随便起)

LOCAL_MODULE_FILENAME:=libbullet(可随便起)

LOCAL_C_INCLUDES:=src/(头文件位置)

(源文件,要列出所有用到的,这里用到BulletSoftBodyBulletDynamics

BulletCollisionsLinearMath

[cpp] view plain copy
  • LOCAL_SRC_FILES:=src/BulletSoftBody/btSoftBody.cpp\
  • src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp\
  • src/BulletSoftBody/btSoftBodyHelpers.cpp\
  • src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp\
  • src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp\
  • src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp\
  • src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp\
  • src/BulletSoftBody/btDefaultSoftBodySolver.cpp\
  • src/BulletDynamics/Character/btKinematicCharacterController.cpp\
  • src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\
  • src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp\
  • src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp\
  • src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp\
  • src/BulletDynamics/Dynamics/btdiscreteDynamicsWorld.cpp\
  • src/BulletDynamics/Dynamics/btRigidBody.cpp\
  • src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp\
  • src/BulletDynamics/Vehicle/btRaycastVehicle.cpp\
  • src/BulletDynamics/Vehicle/btWheelInfo.cpp\
  • src/BulletDynamics/Featherstone/btMultiBody.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp\
  • src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp\
  • src/BulletDynamics/MLcpsolvers/btDantzigLCP.cpp\
  • src/BulletDynamics/MLcpsolvers/btMLcpsolver.cpp\
  • src/BulletDynamics/MLcpsolvers/btLemkeAlgorithm.cpp\
  • src/BulletCollision/broadphaseCollision/btAxisSweep3.cpp\
  • src/BulletCollision/broadphaseCollision/btbroadphaseProxy.cpp\
  • src/BulletCollision/broadphaseCollision/btCollisionAlgorithm.cpp\
  • src/BulletCollision/broadphaseCollision/btDbvt.cpp\
  • src/BulletCollision/broadphaseCollision/btDbvtbroadphase.cpp\
  • src/BulletCollision/broadphaseCollision/btdispatcher.cpp\
  • src/BulletCollision/broadphaseCollision/btMultiSapbroadphase.cpp\
  • src/BulletCollision/broadphaseCollision/btOverlappingPairCache.cpp\
  • src/BulletCollision/broadphaseCollision/btQuantizedBvh.cpp\
  • src/BulletCollision/broadphaseCollision/btSimplebroadphase.cpp\
  • src/BulletCollision/Collisiondispatch/btActivatingCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btBoxBoxCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btBox2dBox2dCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btBoxBoxDetector.cpp\
  • src/BulletCollision/Collisiondispatch/btCollisiondispatcher.cpp\
  • src/BulletCollision/Collisiondispatch/btCollisionObject.cpp\
  • src/BulletCollision/Collisiondispatch/btCollisionWorld.cpp\
  • src/BulletCollision/Collisiondispatch/btCollisionWorldImporter.cpp\
  • src/BulletCollision/Collisiondispatch/btCompoundCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btCompoundCompoundCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btConvexConcaveCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btConvexConvexAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btConvexPlaneCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btConvex2dConvex2dAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btDefaultCollisionConfiguration.cpp\
  • src/BulletCollision/Collisiondispatch/btEmptyCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btGhostObject.cpp\
  • src/BulletCollision/Collisiondispatch/btHashedSimplePairCache.cpp\
  • src/BulletCollision/Collisiondispatch/btInternalEdgeUtility.cpp\
  • src/BulletCollision/Collisiondispatch/btManifoldResult.cpp\
  • src/BulletCollision/Collisiondispatch/btSimulationIslandManager.cpp\
  • src/BulletCollision/Collisiondispatch/btSphereBoxCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btSphereSphereCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btSphereTriangleCollisionAlgorithm.cpp\
  • src/BulletCollision/Collisiondispatch/btUnionFind.cpp\
  • src/BulletCollision/Collisiondispatch/SphereTriangleDetector.cpp\
  • src/BulletCollision/CollisionShapes/btBoxShape.cpp\
  • src/BulletCollision/CollisionShapes/btBox2dShape.cpp\
  • src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\
  • src/BulletCollision/CollisionShapes/btCapsuleShape.cpp\
  • src/BulletCollision/CollisionShapes/btCollisionShape.cpp\
  • src/BulletCollision/CollisionShapes/btCompoundShape.cpp\
  • src/BulletCollision/CollisionShapes/btConcaveShape.cpp\
  • src/BulletCollision/CollisionShapes/btConeshape.cpp\
  • src/BulletCollision/CollisionShapes/btConvexHullShape.cpp\
  • src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp\
  • src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp\
  • src/BulletCollision/CollisionShapes/btConvexpolyhedron.cpp\
  • src/BulletCollision/CollisionShapes/btConvexShape.cpp\
  • src/BulletCollision/CollisionShapes/btConvex2dShape.cpp\
  • src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp\
  • src/BulletCollision/CollisionShapes/btCylinderShape.cpp\
  • src/BulletCollision/CollisionShapes/btEmptyShape.cpp\
  • src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp\
  • src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp\
  • src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp\
  • src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp\
  • src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\
  • src/BulletCollision/CollisionShapes/btpolyhedralConvexShape.cpp\
  • src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp\
  • src/BulletCollision/CollisionShapes/btShapeHull.cpp\
  • src/BulletCollision/CollisionShapes/btSphereShape.cpp\
  • src/BulletCollision/CollisionShapes/btStaticPlaneshape.cpp\
  • src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\
  • src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleCallback.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleMesh.cpp\
  • src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\
  • src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp\
  • src/BulletCollision/Gimpact/btContactProcessing.cpp\
  • src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp\
  • src/BulletCollision/Gimpact/btGImpactBvh.cpp\
  • src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\
  • src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\
  • src/BulletCollision/Gimpact/btGImpactShape.cpp\
  • src/BulletCollision/Gimpact/btTriangleShapeEx.cpp\
  • src/BulletCollision/Gimpact/gim_Box_set.cpp\
  • src/BulletCollision/Gimpact/gim_contact.cpp\
  • src/BulletCollision/Gimpact/gim_memory.cpp\
  • src/BulletCollision/Gimpact/gim_tri_collision.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\
  • src/BulletCollision/NarrowPhaseCollision/btpolyhedralContactClipping.cpp\
  • src/LinearMath/btAlignedAllocator.cpp\
  • src/LinearMath/btConvexHull.cpp\
  • src/LinearMath/btConvexHullComputer.cpp\
  • src/LinearMath/btGeometryUtil.cpp\
  • src/LinearMath/btPolarDecomposition.cpp\
  • src/LinearMath/btQuickprof.cpp\
  • src/LinearMath/btSerializer.cpp\
  • src/LinearMath/btVector3.cpp

  • 最后还要加上一句,表示生成静态库如果将STATIC该文SHARED则生成动态库

    include$(BUILD_STATIC_LIBRARY)

    然后进入命令行

    进入jni所在目录

    ndk-build

    等待编译完成


    将三个目录下的libbullet.a分别复制到cocos2dx的安装目录下的

    安装目录\Cocos\frameworks\cocos2d-x\prebuilt\android\相应文件下

    进入Cocos\frameworks\cocos2d-x\external

    新建文件夹Bullet,在Bullet下新建prebuild-mk

    Box2D\prebuild-mk下的Android.mk复制到Bullet/prebuild-mk

    修改如下3

    LOCAL_MODULE:=bullet_static

    LOCAL_MODULE_FILENAME:=libbullet

    LOCAL_SRC_FILES:=../../../prebuilt/android/$(TARGET_ARCH_ABI)/libbullet.a


    复制头文件

    bullet3src的所有文件复制到新建的Bullet文件下


    删除不是.h的所有文件

    下一步任务繁重,

    将所有用到BulletCollisionBulletDynamicsBulletSoftBodyLinearMath目录下的include都加上Bullet/,可以使用Notepad++Bullet目录搜索Bullet,并替换为Bullet/BulletLinearMath并替换为Bullet/LinearMath

    进入Cocos\frameworks\cocos2d-x\cocos\prebuilt-mk

    Android.mk

    LOCAL_WHOLE_STATIC_LIBRARIES+=Box2d_static下面添加

    LOCAL_WHOLE_STATIC_LIBRARIES+=bullet_static

    $(callimport-module,Box2D/prebuilt-mk)下面添加

    $(callimport-module,Bullet/prebuilt-mk)

    至此已经完成编译静态库

    下载地址

    Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

    Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

    1.使用Cocos引擎建立工程,打开cocosstudio修改分辨率为960*640,删掉背景图片


    发布到vs工程

    1.打开AppDelegate设置分辨率,并运行

    director->getopenGLView()->setDesignResolutionSize(960,640,ResolutionPolicy::EXACT_FIT);

    2.配置Bullet(win32)到cocos2dx

    首先要将bullet3-master的头文件复制到cocos\frameworks\cocos2d-x\external\Bullet;具体方法请看

    如下图Bullet3之交叉编译Android复制头文件


    4.将编译好的Bullet库(win32release库复制到

    Cocos\frameworks\cocos2d-x\prebuilt\win32下分别更名为

    BulletCollision_vs2012.lib

    BulletDynamics_vs2012.lib

    BulletSoftBody_vs2012.lib

    LinearMath_vs2012.lib

    如何得到Bullet库,这个就要去看Bullet3HelloWorldvs2012补充如何生成Bullet

    5.打开刚才生成的项目的属性,选择链接器->输入->附加依赖项,输入生成的Bullet库,如图


    将PhysicsWorld3D类复制到classes/physics3d并添加到工程中,编译运行,成功表明配置成功,

    有可能会出现errorLNK2038:检测到“RuntimeLibrary”的不匹配项:MTd_StaticDebug不匹配值“MDd_DynamicDebug”

    Bullet生成时的c/c++->代码生成->运行库,改为MD

    5.测试PhysicsWorld3D

    HelloWorldScene.h添加

    [cpp] view plain copy
  • #include"physics3d/PhysicsWorld3D.h"
  • public:
  • voidonExit();
  • voidupdate(floatdelta);
  • private:
  • boolinitPhysics3D();//初始化物理世界
  • boolinitCamera();//初始化摄像机
  • private:
  • PhysicsWorld3D*_world;//3d物理世界
  • btRigidBody*_Box;//盒子
  • cocos2d::Sprite3D*_spBox;//盒子模型
  • cocos2d::Camera*_camera;//摄像机
  • 在HelloWorld::init()

    先初始化摄像机,再初始化物理世界,

    关于初始化物理世界,首先创建,然后添加一个地面,再添加一个Box作为测试用

    [cpp] view plain copy
  • boolHelloWorld::initPhysics3D()
  • {
  • _world=PhysicsWorld3D::create();//创建3d物理世界
  • if(_world==nullptr)
  • {
  • returnfalse;
  • }
  • //载入plane模型
  • autospPlane=Sprite3D::create("model/ground.c3b");
  • this->addChild(spPlane);
  • spPlane->setPosition3D(Vec3::ZERO);
  • //addaplane方向向上,位置(0,0),0.5的摩擦,0.5的弹性
  • _world->addplane(btVector3(0,1,btVector3(0,PhysicsMaterial3D(0,0.5,0));
  • //载入盒子模型
  • _spBox=Sprite3D::create("model/Box.c3b");
  • this->addChild(_spBox);
  • _spBox->setPosition3D(Vec3(0,20,0));
  • //addaBox
  • _Box=_world->addBox(btVector3(1,1),0));
  • _Box->setUserPointer(_spBox);
  • //设置2摄像机可见
  • this->setCameraMask(2);
  • returntrue;
  • }
  • 每一帧去更新物理世界,同时更新Box的位置,当然可以使用MotionState去优化,这个不着急

    [cpp] view plain copy
  • voidHelloWorld::update(floatdelta)
  • {
  • staticfloatm[16];
  • _world->update(delta);
  • autotrans=_Box->getWorldTransform();//获取Box的变换矩阵
  • trans.getopenGLMatrix(m);
  • _spBox->setNodetoParentTransform(Mat4(m));//设置Box模型的变换矩阵,但是getPosition3D不会得到正确位置,这个以后讨论
  • }
  • 当HelloWorld退出时要销毁物理世界

    [cpp] view plain copy
  • voidHelloWorld::onExit()
  • {
  • Layer::onExit();
  • _world->destroy();//销毁物理世界
  • _world=nullptr;
  • }
  • 当运行程序,会看到一个Box从天而降,重重的摔在地上


    源代码及其资源下载

    cocos2d-x 2.2.0 CCUserDefault在安卓系统下不能正确保存的问题

    cocos2d-x 2.2.0 CCUserDefault在安卓系统下不能正确保存的问题

    解决方案

    请在修改数据后手动调用
    CCUserDefault::flush()

    一些废话

    但是——
    是我眼瞎了吗?
    用于win32的CCUserDefault.cpp和用于android的CCUserDefaultAndroid.cpp中
    对于flush()的实现都是空的。
    好吧,总之在手机上测试确实非常立竿见影。
    无论如何,请在修改数据后手动调用flush,而不依赖系统的自动flush,保持一个良好的编码习惯。

    Cocos2d-x 3.2示例UserDefaultTest(用户默认配置)

    Cocos2d-x 3.2示例UserDefaultTest(用户默认配置)

    <span>本篇博客介绍Cocos2d-x 3.2示例中的UserDefaulstTest,我们在开发中可能需要用到一些默认配置,一般会以xml形式保存。Cocos2d-x为我们提供了UserDefault类来实现这样的需求</span>
    -- enable log
    --[[
    UserDefaultTest.lua
    用户默认配置
    ]]--
    
    local function dotest()
      cclog("********************** init value ***********************")
    
      -- set default value
      -- 设置默认值
      cc.UserDefault:getInstance():setStringForKey("string","value1")-- 字符串
      cc.UserDefault:getInstance():setIntegerForKey("integer",10)-- 整型
      cc.UserDefault:getInstance():setFloatForKey("float",2.3)--浮点型
      cc.UserDefault:getInstance():setDoubleForKey("double",2.4)-- 双精度
      cc.UserDefault:getInstance():setBoolForKey("bool",true)-- 布尔型
    
      -- print value
      -- 打印获取到的值
      -- 根据key获取字符串值
      local ret = cc.UserDefault:getInstance():getStringForKey("string")
      cclog("string is %s",ret)
    
      -- 根据key获取双精度值
      local d = cc.UserDefault:getInstance():getDoubleForKey("double")
      cclog("double is %f",d)
    
      -- 根据key获取整型值
      local i = cc.UserDefault:getInstance():getIntegerForKey("integer")
      cclog("integer is %d",i)
    
      -- 根据key获取浮点数值
      local f = cc.UserDefault:getInstance():getFloatForKey("float")
      cclog("float is %f",f)
    
      -- 根据key获取布尔值
      local b = cc.UserDefault:getInstance():getBoolForKey("bool")
      if b == true then
        cclog("bool is true")
      else
        cclog("bool is false")
      end
    
      --cc.UserDefault:getInstance():flush()
    
      cclog("********************** after change value ***********************")
    
      -- change the value
      -- 修改值
      cc.UserDefault:getInstance():setStringForKey("string","value2")
      cc.UserDefault:getInstance():setIntegerForKey("integer",11)
      cc.UserDefault:getInstance():setFloatForKey("float",2.5)
      cc.UserDefault:getInstance():setDoubleForKey("double",2.6)
      cc.UserDefault:getInstance():setBoolForKey("bool",false)
    
      -- 刷新写入
      cc.UserDefault:getInstance():flush()
    
      -- print value
      -- 根据key获取字符串值
      local ret = cc.UserDefault:getInstance():getStringForKey("string")
      cclog("string is %s",f)
    
      -- 根据key获取布尔值
      local b = cc.UserDefault:getInstance():getBoolForKey("bool")
      if b == true then
        cclog("bool is true")
      else
        cclog("bool is false")
      end
    end
    
    function UserDefaultTestMain()
      local ret = cc.Scene:create()  -- 场景
      local s = cc.Director:getInstance():getWinSize() -- 获取屏幕大小
      local  label = cc.Label:createWithTTF("UserDefault test see log",s_arialPath,28)-- 创建标签
      ret:addChild(label,0)
      label:setAnchorPoint(cc.p(0.5,0.5))
      label:setPosition( cc.p(s.width/2,s.height-50) )
      ret:addChild(CreateBackMenuItem())
      dotest()
      return ret
    end
    

    日志消息如下:

    关于cocos2dx的数据保存之UserDaultcocos存档的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Bullet(Cocos2dx)之交叉编译Android,集成到cocos2dx3.x、Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D、cocos2d-x 2.2.0 CCUserDefault在安卓系统下不能正确保存的问题、Cocos2d-x 3.2示例UserDefaultTest(用户默认配置)等相关内容,可以在本站寻找。

    本文标签: