程序运行后,点击两个按钮却没有任何的输出,难道是因为数据没有被存储吗?如何修改?
HelloWorldScene.cpp代码如下:
#include “HelloWorldScene.h”
#include “WwwScene.h”
USING_NS_CC;
Scene* HelloWorld::createScene()
{
return HelloWorld::create();
}
bool HelloWorld::init()
{
if ( !Scene::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallbackread, this));
closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
origin.y + closeItem->getContentSize().height/2));
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1);
auto closeItem1 = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallbacksave, this));
closeItem1->setPosition(Vec2(origin.x + visibleSize.width/2 ,
origin.y + closeItem1->getContentSize().height/2));
auto menu1 = Menu::create(closeItem1, NULL);
menu1->setPosition(Vec2::ZERO);
this->addChild(menu1, 1);
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height));
this->addChild(label, 1);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 0);
UserDefault::sharedUserDefault()->setBoolForKey("isExisted",false);
return true;
}
void HelloWorld::menuCloseCallbackread(Ref* pSender)
{
CCLOG("============================================================");
CCLOG(“reading begin!”);
//根据isExisted的值来判断,是否数据被写入
if (UserDefault::sharedUserDefault()->getBoolForKey(“isExisted”))
{
//读取键值为Int的内容并输出
int intVar = UserDefault::sharedUserDefault()->getIntegerForKey(“int”);
CCLOG(“the int is:%d”, intVar);
//读取键值为float的内容并输出
float floatVar = UserDefault::sharedUserDefault()->getFloatForKey(“float”);
CCLOG(“the float is:%f”, floatVar);
//读取键值为string的内容并输出
std::string str = UserDefault::sharedUserDefault()->getStringForKey(“string”);
CCLOG(“the string is:%s”, str);
}
//如果isExisted的键值为false的话,说明信息没有被保存,不可用
else
{
CCLOG(“not exist!”);
}
CCLOG("============================================================");
}
void HelloWorld::menuCloseCallbacksave(Ref* pSender)
{
CCLOG("============================================================");
CCLOG(“save begin!”);
UserDefault::sharedUserDefault()->setIntegerForKey(“int”, 999);
UserDefault::sharedUserDefault()->setFloatForKey(“float”, 3.1415926);
UserDefault::sharedUserDefault()->setStringForKey(“string”, “this is a string!”);
UserDefault::sharedUserDefault()->setBoolForKey(“isExisted”, true);
CCLOG(“saved file path is %s”, UserDefault::sharedUserDefault()->getXMLFilePath());
CCLOG("============================================================");
}