ModeloEspecial 是一个深受 Backbone.Model 启发的 ORM。它采用面向对象的方法进行数据库交互。
我们正在生产环境中使用它,除了使其更加模块化和易于理解之外,它已经为我们节省了数百行代码。
此文件预览了我们在内部如何使用它来映射数据库中的记录并准备好使用的精灵。
local modeloEspecial = ModeloEspecial:new { name = "yogodb", debug = settings.debugSql } local function migrate(schemaVersion, exec) if schemaVersion < 1 then log "migrating schema to v1" local createPlayers = [[CREATE TABLE IF NOT EXISTS players ( gender VARCHAR, country VARCHAR, sombrero INTEGER, level INTEGER, currentExp INTEGER, firstRun INTEGER, name VARCHAR, color1 INTEGER, color2 INTEGER, totalTimePlayed INTEGER, remoteplayerid VARCHAR, wordId VARCHAR);]] exec(createPlayers) end return 1 end modeloEspecial:migrate(migrate)
local Model = require'modeloespecial'.Model local Player = Model:extend {table = 'players'} Player.sequenceData = { {name = "idle", start = 1, count = 8, time = 800}, {name = "jump", start = 9, count = 8, time = 800}, -- other sequence data } Player.sheetData = { width = 128, height = 128, numFrames = 16, } function Player:getSprite(parent) assert(self:isInstanceOf(Player), 'Called .getSprite() instead of :getSprite()') local group = display.newGroup() -- the spritesheet is in either images/player/male.png or images/player/female.png local path = string.format("images/player/%s.png", self:get'gender') local sheet = graphics.newImageSheet(path, self.class.sheetData) local sprite = display.newSprite(group, sheet, self.class.sequenceData) group.sprite = sprite function group:playSequence(name) self.sprite:setSequence(name) self.sprite:play() end if parent then parent:insert(group) end return group end return Player
local storyboard = require 'storyboard' local Player = require 'player' local scene = storyboard.newScene() local player function scene:createScene() end function scene:enterScene() player = Player:fetchById(1) player:getSprite(scene.view) end function scene:exitScene() player = nil end scene:addEventListener('createScene', scene) scene:addEventListener('enterScene', scene) scene:addEventListener('exitScene', scene) return scene
分类:
贡献者:
jeduan