quick-cocos2dx 实例 ------ nightclub
2013-12-16 13:54
288 查看
--[[ 今天开始学习第一个sample: NightClub。 这个示例看似简单,实际用到了quick的很多功能, 如:音频、Tiles地图、touch事件、批次渲染、动画、动作等 下面开始着手逐行抄写分析MainScene.lua ]] --[[ 首先,定义一个新的场景类,类名是“MainScene”。 而对于何时实例化这个类,则是由AppBase的enterScene完成, 所以我们不用关心在哪调用new函数,只需要在使用时调用app:enterScene("场景名") ]] local MainScene = class("MainScene", function() return display.newScene("MainScene") end) -- 构造函数 function MainScene:ctor() -- 地图, 用bgTitle.png瓦片拼接而成 local ground = display.newTilesSprite("bgTile.png"); self:addChild(ground); -- 触摸层。 self.touchLayer = display.newLayer(); self:addChild(self.touchLayer) -- 舞台批渲染节点 self.stageNode = display.newBatchNode("stage.png", 100) self:addChild(self.stageNode) -- player批处理渲染节点 self.playerNode = display.newBatchNode("player.png", 100000) self:addChild(self.playerNode) self.resIds = { "player_f0006","player_f0015","player_f0016","player_f0018","player_f0021", "player_f0025","player_f0026","player_f0032","player_f0033","player_f0037", "player_f0038","player_f0046","player_f0057","player_f0067","player_f0068", "player_f0069","player_f0070","player_f0073","player_f0208","player_f0209", } -- 动画名字及动画帧数 self.actionNames = {"dance_a_1", "dance_a_2", "stand_1", "stand_2", "walk_1", "walk_2"} self.actionNums = {8, 8, 4, 4, 8, 8} -- 存储创建出的对象 self.objs = {} end --[[ 创建单个对象 @param resId @param actionId @param x @param y @param isFixed ]] function MainScene:genObject(resId, actionId, x, y, isFixed) -- 创建帧序列 local frames = display.newFrames(resId .. "_" .. self.actionNames[actionId] .."_%02d.png", 1, self.actionNums[actionId]) local sprite = display.newSprite(frames[1], x, y) -- 一定概率水平翻转(朝向) if math.random(1, 2) == 1 then sprite:setFlipX(true) end if isFixed == nil then self.objs[#self.objs + 1] = sprite end -- 添加到player批渲染结点 self.playerNode:addChild(sprite); -- 创建动画 local animation = display.newAnimation(frames, math.random(1, 2) / 15) -- 播放动画 sprite:playAnimationForever(animation) end --[[ 创建players @param num:个数 ]] function MainScene:genObjects(num) for i = 1, num do local rand1 = math.random(1, #self.resIds) local actId = math.random(1, #self.actionNames) local x = math.random(15, display.width - 15) local y = math.random(120, display.height - 75) self:genObject(self.resIds[rand1], actId, x, y) end end --[[ 创建舞台 @param x @param y ]] function MainScene:genStageObject(x, y) local frames = display.newFrames("bg%02d.png", 1, 4); local sprite = display.newSprite(frames[1], x, y) self.stageNode:addChild(sprite); local animation = display.newAnimation(frames, math.random(1, 2) / 10) sprite:playAnimationForever(animation) end --[[ 创建舞台+舞台上的player ]] function MainScene:genInitObjects() local ofstX = 58 local ofstY = 112 for i = 0, 8 do self:genStageObject(ofstX + i * 105, ofstY) local rand1 = math.random(1, #self.resIds) self:genObject(self.resIds[rand1], 1, ofstX + i * 105, ofstY - 15, true) end end --[[ touch事件处理函数 @param event @param x @param y ]] function MainScene:onTouch(event, x, y) print (event) if("began" == event) then return true end end --[[ 进入场景 ]] function MainScene:onEnter() -- 播放背景音乐 audio.playMusic("sound/newdali.mp3", true) -- 加载plist display.addSpriteFramesWithFile("stage.plist", "stage.png") display.addSpriteFramesWithFile("player.plist", "player.png") -- 创建object self:genInitObjects() self:genObjects(91) -- 注册touch事件处理函数 -- 单点触摸 self.touchLayer:addTouchEventListener(function(event, x, y) return self:onTouch(event, x, y) end) self.touchLayer:setTouchEnabled(true) end return MainScene
相关文章推荐
- 哎呀
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植3:游戏主菜单界面的实现
- cocos2dx-lua or quick 2dx 中的图片资源加密
- cocos2dx 看上去很美的引用计数造成的内存泄露(二)——CCCallfuncO的参数
- [一位菜鸟的COCOS-2D编程之路]COCOS2D中得动作,特效和动画
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植2:如何新建一个项目,引擎目录结构介绍
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植1:环境搭建及Parkour介绍
- 序列函数
- 基于cocos2d-x的游戏框架设计——李成
- cocos2d-x学习日志(14) --A星寻路算法之45度地图
- cocos2d-x学习 之二
- cocos2d-x游戏开发系列教程-坦克大战游戏关卡选择场景的编写上
- cocos2d-x游戏开发系列教程-坦克大战游戏关卡选择场景的编写上
- cocos2dx学习,转摘一些链接
- cocos2dx 看上去很美的引用计数造成的内存泄露(一)——CCCallFunc对象
- cocos2dx之CCAnimate创建一个动画
- 【转】 如何利用Cocos2d-x开发一个游戏
- cocos2dx之CCTintTo、CCTintBy
- 最新 cocos2d-x自适应android不同分辨率,使用多套资源
- cocos2d-x:七彩连珠