拾弐 Cocos2d-x로 데이터 저장 읽기

목차



1 소개
2 데이터 저장 읽기
3 향후 예정

소개



데이터 저장 읽기



아래 코드를 실행하면 터치 횟수가 왼쪽 상단에 표시되며 앱을 다시 시작할 때 저장된 터치 횟수를 읽을 수 있습니다.

GameScene.lua
local KEY = "SCORE"

local GameScene = class("GameScene",function()
    return cc.Scene:create()
end)

function GameScene.create()
    local scene = GameScene.new()

    scene:addChild(scene:createLayer())

    return scene
end


function GameScene:ctor()
    self.visibleSize = cc.Director:getInstance():getVisibleSize()
    self.origin = cc.Director:getInstance():getVisibleOrigin()
    self.schedulerID = nil
end

function GameScene:playBgMusic()

end

function GameScene:createLayer()
    local layer = cc.Layer:create()

    -- 背景
    local sprite_background = cc.Sprite:create("farm.jpg")
    sprite_background:setPosition(self.visibleSize.width/2, self.visibleSize.height/2)
    sprite_background:setScale(1.2)
    layer:addChild(sprite_background)

    -- a1)保存されている"SCORE"の値を取得 ない場合は0
    local score = cc.UserDefault:getInstance():getIntegerForKey(KEY, 0)

    -- 得点ラベルを追加
    local label = cc.Label:createWithSystemFont(score, "Arial", 50)
    label:setPosition(100,900)
    layer:addChild(label)

    -- タッチ開始時に呼ばれる
    local function onTouchBegan(touch, event)
        local location = touch:getLocation()

        -- 得点を1足して得点表示を更新
        score = score + 1
        label:setString(score)

        -- a2)得点情報を"SCORE"に保存する
        cc.UserDefault:getInstance():setIntegerForKey(KEY, score)

        return true
    end

    -- タッチイベントで呼ばれる関数を登録し、このレイヤーでのタッチイベント取得を有効化
    local listener = cc.EventListenerTouchOneByOne:create()
    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
    local eventDispatcher = layer:getEventDispatcher()
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)

    return layer
end

return GameScene


a1) cc.UserDefault:getInstance():getIntegerForKey(KEY, 0) 가 저장된 값을 읽는 API입니다. 여기서 KEY 부분은 임의의 문자열을 지정할 수 있습니다. 여기서는 "SCORE"를 지정합니다. 또한 두 번째 인수 0은 저장된 값이 없을 때 반환됩니다. 즉, "SCORE"의 값을 읽을 수 있고, 단, 저장된 값이 없는 경우는 0을 돌려준다는 의미입니다.

a2) cc.UserDefault:getInstance():setIntegerForKey(KEY, score) 에서 "SCORE"값을 저장합니다. 두 번째 인수의 값은 "SCORE"의 값으로 저장됩니다.

처음 시작할 때는 왼쪽 상단의 표시가 0이지만,



여러 번 화면을 터치한 후 다시 시작하면 저장된 터치 횟수가 시작 시 바로 표시됩니다.



향후 예정



Cocos2d-x로 게임을 만들 때 유용한 표시 자릿수를 지정하고 시간을 얻는 등 몇 가지 Lua 함수에 대해 설명합니다.

좋은 웹페이지 즐겨찾기