quick-cocos2d-x lua编写简单的场景
2014-03-03 10:05
323 查看
一、先看看我的目录结构
二、CCloud.lua
二、CMessage.lua
三、CResource.lua
四、scenes/MainScene.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
相关文章推荐
- quick-cocos2d-x简单模态框编写
- quick-cocos2d-x-2.2.1-rc 中用lua编写一个CCScrollView
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- Cocos2d-X 中quick----lua的跳转场景的实现
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- 利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- quick-Cocos2d/framework/display.lua(这个组件提供的功能是很重要的,包括场景、层、精灵、动画这些游戏中必要的组件)
- Quick-Cocos2d-X Lua 操作TiledMap
- 小小菜之Cocos2d-x游戏开发旅程——Lua之场景跳转
- 【COCOS2DX-LUA 脚本开发之八】使用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 用Quick-Cocos2d-x 3.3简单开发微信打飞机 -01
- Cocos2d-x-lua实现简单的动画帧、读取CocoStudio文件
- cocos2d-x-LuaProxy学习日志(7) -- 场景切换
- Cocos Code IDE执行效率太慢,Sublime+QuickXDev依然是最佳的cocos2d-x + Lua编辑器
- cocos2d-quick-lua 中使用百度翻译
- [quick-cocos2d-x lua学习] 各大IDE之体验及选择 ( LDT、Sublime Text 2、IntelliJ IDEA 12、XCode5 )
- [quick-cocos2d-x lua学习] 框架详细介绍(一)
- (原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.h<后续会提供源码下载链接>