quick-cocos2d-x lua编写简单的场景

来源:互联网 发布:信息安全需要学编程吗 编辑:程序博客网 时间:2024/06/05 22:30

一、先看看我的目录结构

二、CCloud.lua

require("app.CResource")local m_rc = RcCloudCCloud = class("CCloud", function()return CCSprite : create(m_rc.m_fname)end)CCloud.winSize = CCDirector : sharedDirector() : getVisibleSize()local function call_setPos(this)local sz = this : getContentSize()this : setPosition ( ccp( -sz.width,  this.winSize.height / (math.random(5))) )endfunction CCloud : create(pLayer)    local cloud = CCloud.new()pLayer : addChild(cloud)    math.randomseed(os.time())local sz = cloud : getContentSize()local by = CCMoveBy:create(20.0, ccp(cloud.winSize.width + 2 * sz.width, 0))local pFun = CCCallFuncN : create (call_setPos)local pRepeat = CCRepeatForever : create (CCSequence:createWithTwoActions ( pFun, by) )cloud : runAction(pRepeat)endfunction CCloud:ctor()endreturn CCloud


二、CMessage.lua

require("app.CResource")local m_rc = RcMessageCMessage = class("CMessage", function()    return CCSprite : create(m_rc.m_fname)end)CMessage.winSize = CCDirector : sharedDirector() : getVisibleSize()CMessage.m_lbl = NULL-- 设置文本function CMessage : setText(text)    self : setPosition(ccp(self.winSize.width / 2.0, self.winSize.height / 2.0))    self.m_lbl : setString(text)    local sz = self : getContentSize()    self.m_lbl : setPosition(ccp(sz.width / 2.0, sz.height / 2.0))end-- 隐藏local function  call_hide(this)    this : removeFromParent()end-- 提示function CMessage : create(pLayer, text)    local pMsg = CMessage.new()    pLayer : addChild(pMsg)    pMsg.m_lbl = CCLabelTTF : create("", "Tohoma", 35)    pMsg : addChild(pMsg.m_lbl)    pMsg : setText(text)    pMsg : setOpacity(0)    pMsg.m_lbl : setOpacity(0)    local ptOri = ccp(pMsg : getPosition())    local dtPos = ccp(0, 50)    pMsg : setPosition(ccp(ptOri.x, ptOri.y - dtPos.y))    pMsg : setVisible(true)        -- 创建移动动画    local moveByIn  = CCMoveBy : create(0.2, dtPos)    local moveByOut = CCMoveBy : create(0.2, dtPos)        -- 由无变亮、由亮变无    local in1  = CCFadeIn:create(0.2)    local out1 = CCFadeOut:create(0.2)        local spwanIn    = CCSpawn : createWithTwoActions(moveByIn, in1)    local spwanOut   = CCSpawn : createWithTwoActions(moveByOut, out1)    local delay  = CCDelayTime:create(2.0)        -- 消失动作    local fun = CCCallFuncN : create(call_hide)        -- 最终组合动作    local seqArr = CCArray : create()    seqArr : addObject(spwanIn)    seqArr : addObject(delay)    seqArr : addObject(spwanOut)    seqArr : addObject(fun)     local seq = CCSequence:create(seqArr)    pMsg : runAction(seq)            local in2 = CCFadeIn:create(0.2)    local out2 = CCFadeOut:create(0.2)    local delay2  = CCDelayTime:create(2.0)    local seqArr2 = CCArray : create()    seqArr2 : addObject(in2)    seqArr2 : addObject(delay)    seqArr2 : addObject(out2)    local seq2 = CCSequence:create(seqArr2)    pMsg.m_lbl : runAction(seq2)endfunction CMessage:ctor()endreturn CMessage


三、CResource.lua

local winSize = CCDirector : sharedDirector() : getVisibleSize()-- 定义主场景资源类RcMainScene = {}RcMainScene.m_bg = {name = "bg.jpg", pos = ccp(winSize.width / 2.0, winSize.height / 2.0)}RcMainScene.m_cityMenu = {name = "", pos = ccp(winSize.width / 2.0, winSize.height / 2.0), tag = 100}RcMainScene.m_mine = {name = "4.png", pos = ccp(-310.3, 130.6),tag = 101}RcMainScene.m_shop = {name = "2.png", pos = ccp(-306.7, -96.2), tag = 102}RcMainScene .m_workShop= {name = "10.png", pos = ccp(-123.1, -185.0), tag = 103}RcMainScene .m_bar = {name = "10.png", pos = ccp(107.3,  -185.0), tag = 104}RcMainScene .m_chooseGen= {name = "6.png",  pos = ccp(346.1,  -120.2),  tag = 105}RcMainScene .m_train    = {name = "5.png",  pos = ccp(348.5,  50.2),    tag = 106}RcMainScene .m_trade    = {name = "8.png",  pos = ccp(242.9,  272.2),   tag = 107}RcMainScene .m_inherit  = {name = "11.png", pos = ccp(-9.1,   287.8),   tag = 108}RcMainScene .m_genMap   = {name = "14.png", pos = ccp(-252.7, 289.0),   tag = 109}RcMainScene .m_shrine   = {name = "13.png", pos = ccp(6.5,    52.6),    tag = 110}-- 定义消息资源类RcMessage = {}RcMessage.m_fname = "msg.png"-- 云资源RcCloud = {}RcCloud.m_fname = "cloud.png"


四、scenes/MainScene.lua

require("app.CCloud")require("app.CMessage")require("app.CResource")local m_rc = RcMainScene-- 定义场景类local MainScene = class("MainScene", function()    return display.newScene("MainScene")end)-- menuItem按钮请求回调函数local function call_select(tag, pSender)    tag = tag - 100;    local pCityName = {"矿区", "商店", "玉石作坊", "酒馆", "点将台", "校场", "贸易中心", "传承塔", "名将图鉴", "战神殿"}     local pMsg = "没有开启【" .. pCityName[tag] .. "】,尽请期待!"    -- CMessage : create(pSender : getParent() : getParent(), pMsg)    local scene = pSender : getParent() : getParent()    scene : testNet()end--功能:读取文件--输入:文件名--输出:屏幕上一行一行显示文件里的内容local function readFile(filename)    local rFile = io.open(filename, "r")    assert(rFile)    for str in rFile.lines() do        print(str)    end    rFile : close()end--功能:写入文件--输入:文件名, 内容--输出:生成的文件里面包含内容local function writeFile(filename, info)    local wfile=io.open(filename, "w")--写入文件(w覆盖)    assert(wfile)           --打开时验证是否出错    wfile:write(info)       --写入传入的内容    wfile:close()           --调用结束后记得关闭end-- 请求结束function MainScene : call_request(event, name)    local ok = (event.name == "completed")    local request = event.request     if not ok then        -- 请求失败,显示错误代码和错误消息         CMessage : create(self, "请求失败,代码" .. request:getErrorCode() .. request:getErrorMessage())        return    end     local code = request:getResponseStatusCode()    if code ~= 200 then        -- 请求结束,但没有返回 200 响应代码        CMessage : create(self, "请求失败, 没有返回200 响应代码")        return    end                                             -- 请求成功,显示服务端返回的内容    local resStr = request : getResponseData()    local path = CCFileUtils : sharedFileUtils() : getWritablePath() .. name ..".png"    writeFile(path, resStr)    CMessage : create(self, "成功从【" .. name .."】请求数据")    --从写入的文件中读取图片    local sprite = CCSprite : create(path)    sprite : setPosition(display.cx, display.cy)    self : addChild(sprite)        sprite : runAction(CCScaleTo : create(1.0, 0))endfunction MainScene : addItemToMenu(menu, res, handler)        local item = CCMenuItemImage : create(res.name, res.name)    item : setTag (res.tag)    item : setPosition(res.pos)    if handler then        item : registerScriptTapHandler( handler )    end    menu : addChild(item)endfunction MainScene : testNet()    local url = {"http://www.baidu.com/img/bdlogo.gif", "http://search.sina.com.cn/images/logo_new.png", "http://img3.cache.netease.com//war/2012/11/01/index/logo-war-107.gif"}    local name = {"百度", "新浪", "网易"}    math.randomseed( os.time() )    local r = math.random(1, 3)    local request = network.createHTTPRequest(function(event)        self : call_request(event, name[r])        end, url[r], "GET")    -- request : addPOSTValue("KEY", "VALUE")    request : start()endfunction MainScene:ctor()    -- 添加一张背景图    local bg = display.newSprite(m_rc.m_bg.name, display.cx, display.cy)    self:addChild(bg)    self:markAutoCleanupImage(m_rc.m_bg.name)    -- 添加菜单    local menu = CCMenu : create()    menu : setPosition(m_rc.m_cityMenu.pos)    self : addChild(menu)    --添加云    CCloud : create(self)    CCloud : create(self)    CCloud : create(self)    -- 添加图片按钮menuItem    self : addItemToMenu(menu ,m_rc.m_mine,     call_select)    self : addItemToMenu(menu ,m_rc.m_shop,     call_select)    self : addItemToMenu(menu ,m_rc.m_workShop, call_select)    self : addItemToMenu(menu ,m_rc.m_bar,      call_select)    self : addItemToMenu(menu ,m_rc.m_chooseGen,call_select)    self : addItemToMenu(menu ,m_rc.m_train,    call_select)    self : addItemToMenu(menu ,m_rc.m_trade,    call_select)    self : addItemToMenu(menu ,m_rc.m_inherit,  call_select)      self : addItemToMenu(menu ,m_rc.m_genMap,   call_select)    self : addItemToMenu(menu ,m_rc.m_shrine,   call_select)         endfunction MainScene:onEnter()    if device.platform == "android" then        -- avoid unmeant back        self:performWithDelay(function()            -- keypad layer, for android            local layer = display.newLayer()            layer:addKeypadEventListener(function(event)                if event == "back" then app.exit() end            end)            self:addChild(layer)            layer:setKeypadEnabled(true)        end, 0.5)    endendfunction MainScene:onExit()endreturn MainScene



0 0
原创粉丝点击