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

一、先看看我的目录结构

二、CCloud.lua

require("app.CResource")

local m_rc = RcCloud

CCloud = 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))) )

end

function 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)

end



function CCloud:ctor()


end

return CCloud


二、CMessage.lua

require("app.CResource")

local m_rc = RcMessage

CMessage = 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)

end



function CMessage:ctor()


end

return 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))

end

function 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)

end

function 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()

end

function 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)  
       

end


function 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)
    end
end

function MainScene:onExit()
end

return MainScene



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值