Lua_顺序动作、组合动作、重复动作、永远重复动作和反向动作
2015-04-28 00:25
225 查看
require "Cocos2d" require "Cocos2dConstants" -- for CCLuaEngine traceback function __G__TRACKBACK__(msg) cclog("----------------------------------------") cclog("LUA ERROR: " .. tostring(msg) .. "\n") cclog(debug.traceback()) cclog("----------------------------------------") return msg end local function main() collectgarbage("collect") --避免内存泄漏 collectgarbage("setpause", 100) collectgarbage("setstepmul", 5000) --初始化导演 local director = cc.Director:getInstance() local glview = director:getOpenGLView() if glview == nil then glview = cc.GLView:createWithRect("HelloLua", cc.rect(0, 0, 960, 640)) director:setOpenGLView(glview) end glview:setDesignResolutionSize(960, 640, cc.ResolutionPolicy.SHOW_ALL) --显示帧率 director:setDisplayStats(true) --设置帧率 director:setAnimationInterval(1.0 / 60) --增加搜索路径 cc.FileUtils:getInstance():addSearchPath("src") cc.FileUtils:getInstance():addSearchPath("res") --创建场景 local scene = require("GameScene") local settingScene = scene.create() --运行场景 if cc.Director:getInstance():getRunningScene() then cc.Director:getInstance():replaceScene(settingScene) else cc.Director:getInstance():runWithScene(settingScene) end end xpcall(main, __G__TRACKBACK__)
require "Cocos2d" require "Cocos2dConstants" -- 定义常量 kSequence = 102 kSpawn = 103 kRepeate = 104 kRepeatForever1 = 105 kReverse = 106 local size = cc.Director:getInstance():getWinSize() local debug = true cclog = function(...) if debug then print(string.format(...)) end end local GameScene = class("GameScene",function() local scene = cc.Scene:createWithPhysics() scene:getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL) return scene end) function GameScene:ctor() self.visibleSize = cc.Director:getInstance():getVisibleSize() self.origin = cc.Director:getInstance():getVisibleOrigin() end function GameScene.create() local scene = GameScene.new() scene:addChild(scene:createAction()) return scene end function GameScene:createAction() local layer = cc.Layer:create() local bg = cc.Sprite:create("Background.png") bg:setPosition(cc.p(size.width/2, size.height/2)) layer:addChild(bg) local function OnClickMenu(tag, menuItemSender) cclog("tag = %d", tag) actionFlag = menuItemSender:getTag() local scene = require("ActionScene") local nextScene = scene.create() local ts = cc.TransitionJumpZoom:create(1, nextScene) cc.Director:getInstance():pushScene(ts) end local pItmLabel1 = cc.Label:createWithBMFont("fonts/fnt2.fnt","Sequence") local pItmMenu1 = cc.MenuItemLabel:create(pItmLabel1) pItmMenu1:setTag(kSequence) pItmMenu1:registerScriptTapHandler(OnClickMenu) local pItmLabel2 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Spawn") local pItmMenu2 = cc.MenuItemLabel:create(pItmLabel2) pItmMenu2:setTag(kSpawn) pItmMenu2:registerScriptTapHandler(OnClickMenu) local pItmLabel3 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Repeate") local pItmMenu3 = cc.MenuItemLabel:create(pItmLabel3) pItmMenu3:setTag(kRepeate) pItmMenu3:registerScriptTapHandler(OnClickMenu) local pItmLabel4 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "RepeatForever") local pItmMenu4 = cc.MenuItemLabel:create(pItmLabel4) pItmMenu4:setTag(kRepeatForever1) pItmMenu4:registerScriptTapHandler(OnClickMenu) local pItmLabel5 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Reverse") local pItmMenu5 = cc.MenuItemLabel:create(pItmLabel5) pItmMenu5:setTag(kReverse) pItmMenu5:registerScriptTapHandler(OnClickMenu) local menu = cc.Menu:create(pItmMenu1,pItmMenu2,pItmMenu3,pItmMenu4,pItmMenu5) menu:alignItemsVerticallyWithPadding(50) layer:addChild(menu) return layer end return GameScene
<pre name="code" class="cpp">require "Cocos2d" require "Cocos2dConstants" local size = cc.Director:getInstance():getWinSize() local HIDE_TAG = true local isPlaying = false local plane local ActionScene = class("ActionScene",function() return cc.Scene:create() end) function ActionScene:ctor() cclog("ActionScene init") end function ActionScene.create() local scene = ActionScene.new() scene:addChild(scene:createLayer()) return scene end function ActionScene:createLayer() --顺序动作、组合动作、重复动作、永远重复动作和反向动作 cclog("ActionScene actionFlag = %d", actionFlag) local layer = cc.Layer:create() local bg = cc.Sprite:create("Background.png") bg:setPosition(cc.p(size.width/2, size.height/2)) layer:addChild(bg) plane = cc.Sprite:create("hero.png") plane:setPosition(cc.p(size.width / 2, size.height / 2)) layer:addChild(plane) local backMenuItem = cc.MenuItemImage:create("Back-up.png","Back-down.png") backMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(140, 65))) local goMenuItem = cc.MenuItemImage:create("Go-up.png","Go-down.png") goMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(820, 540))) local menu = cc.Menu:create(backMenuItem, goMenuItem) menu:setPosition(cc.p(0, 0)) layer:addChild(menu) local function backMenu(pSender) cclog("ActionScene backMenu") cc.Director:getInstance():popScene() end backMenuItem:registerScriptTapHandler(backMenu) local function goMenu(pSender) cclog("ActionScene goMenu") if actionFlag == kSequence then self:OnSequence(pSender) elseif actionFlag == kSpawn then self:OnSpawn(pSender) elseif actionFlag == kRepeate then self:OnRepeat(pSender) elseif actionFlag == kRepeatForever1 then self:OnRepeatForever(pSender) elseif actionFlag == kReverse then self:OnReverse(pSender) end end goMenuItem:registerScriptTapHandler(goMenu) return layer end function ActionScene:OnSequence(pSender) cclog("ActionScene OnSequence") local p = cc.p(size.width/2, 200) local ac0 = cc.Place:create(p) local ac1 = cc.MoveTo:create(2,cc.p(size.width - 130, size.height - 200)) local ac2 = cc.JumpBy:create(2, cc.p(8, 8),6, 3) local ac3 = cc.Blink:create(2,3) local ac4 = cc.TintBy:create(0.5,0,255,255) plane:runAction(cc.Sequence:create(ac0, ac1, ac2, ac3, ac4, ac0)) end function ActionScene:OnSpawn(pSender) cclog("ActionScene OnSpawn") local p = cc.p(size.width/2, 200) plane:setRotation(0) plane:setPosition(p) local ac1 = cc.MoveTo:create(2,cc.p(size.width - 100, size.height - 100)) local ac2 = cc.RotateTo:create(2, 40) plane:runAction(cc.Spawn:create(ac1,ac2)) end function ActionScene:OnRepeat(pSender) cclog("ActionScene OnRepeat") local p = cc.p(size.width/2, 200) plane:setRotation(0) plane:setPosition(p) local ac1 = cc.MoveTo:create(2,cc.p(size.width - 100, size.height - 100)) local ac2 = cc.JumpBy:create(2,cc.p(10, 10), 20,5) local ac3 = cc.JumpBy:create(2,cc.p(-10, -10),20,3) local seq = cc.Sequence:create(ac1, ac2, ac3) plane:runAction(cc.Repeat:create(seq,3)) end function ActionScene:OnRepeatForever(pSender) cclog("ActionScene OnRepeatForever") local p = cc.p(size.width/2, 500) plane:setRotation(0) plane:setPosition(p) local bezier = { cc.p(0, size.height / 2), cc.p(10, - size.height / 2), cc.p(10,20) } local ac1 = cc.BezierBy:create(2,bezier) local ac2 = cc.TintBy:create(0.5, 0, 255, 255) local ac1Reverse = ac1:reverse() local ac2Repeat = cc.Repeat:create(ac2, 4) local ac3 = cc.Spawn:create(ac1,ac2Repeat) local ac4 = cc.Spawn:create(ac1Reverse,ac2Repeat) local seq = cc.Sequence:create(ac3, ac4) plane:runAction(cc.RepeatForever:create(seq)) end function ActionScene:OnReverse(pSender) cclog("ActionScene OnReverse") local p = cc.p(size.width/2, 300) plane:setRotation(0) plane:setPosition(p) local ac1 = cc.MoveBy:create(2,cc.p(40, 60)) local ac2 = ac1:reverse() local seq = cc.Sequence:create(ac1, ac2) plane:runAction(cc.Repeat:create(seq,2)) end return ActionScene
相关文章推荐
- cocos2dx --- Action介绍 (一、二) (动作顺序、动作组合效果)
- cocos2d-x学习笔记(10)重复动作RepeatForever和Repeat 以及动作组合Sequence和Spawn
- 十五、顺序执行动作重复动作
- linux指令动作的顺序
- 字符串为*号和26个字母的任意组合把*号都移动到最右侧,把字母移到最右侧并保持相对顺序不变
- //组合算法 从M个数中取出N个数,无顺序
- 【Java】正则表达式匹配多单词任意顺序组合的字符串
- 《Cocos2d-x-3.2 Lua-tests》文件详解 之 动作管理ActionManager
- Cocos2d-x Lua中网格动作
- [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序
- cocos2d 人物缩小和放大以及人物移动,重复运动,组合动作
- [Quick-x lua]CCLabel类数字变化动作
- cocos2dx多个精灵调用runAction()方法执行组合动作,只有最后一个精灵有效的问题
- Lua+Nginx的执行顺序
- nginx与lua的执行顺序和步骤说明
- linux中Nginx与Lua执行顺序详解
- MFC学习笔记之:MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序
- lua 字符串组合只能用.. 不能用+
- Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)
- [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序