一、先看看我的目录结构
二、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