cocos-lua学习笔记(七)场景迁移及迁移动画
如何使用cocos-lua去迁移场景呢,我下面的例子详细的说明了如何使用。
使用的版本是3.7,也就是目前最新版本的引擎。
主场景类
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
function MainScene:ctor()
print("MainScene:ctor")
--这是一个按钮
local btn = ccui.Button:create("button/btnDog_N.png", "button/btnDog_P.png", "button/btnDog_D.png", 0)
:pos(display.cx, 100)
:addTo(self)
--按钮文字
btn:setTitleText("点我迁移场景")
--字体大小
btn:setTitleFontSize(25)
--偏移
btn:setTitleOffset(20, 100)
--字体颜色
btn:setTitleColor(cc.c3b(255, 255, 255))
--按钮的回调函数
btn:addTouchEventListener(function(sender, eventType)
if (0 == eventType) then
print("pressed")
elseif (1 == eventType) then
print("move")
elseif (2== eventType) then
nextScene = require("app.scenes.DogScene").new()
print(nextScene)
local transition = display.wrapSceneWithTransition(nextScene, "fade", 0.5)
--替换,释放mainscence
--display.replaceScene(transition)
--这个画页不释放
cc.Director:getInstance():pushScene(transition)
elseif (3== eventType) then
print("cancel")
end
end)
end
function MainScene:onEnter()
end
function MainScene:onExit()
print("onExit")
end
return MainScene
Dog场景类
local DogScene = class("DogScene", function()
return display.newScene("DogScene")
end)
function DogScene:ctor()
print("DogScene")
--这是一个按钮
local btn = ccui.Button:create("dog.png", "dog.png", "dog.png", 0)
:pos(display.cx, 100)
:addTo(self)
--按钮文字
btn:setTitleText("按钮")
--字体大小
btn:setTitleFontSize(25)
--偏移
btn:setTitleOffset(20, 100)
--字体颜色
btn:setTitleColor(cc.c3b(255, 255, 255))
--按钮的回调函数
btn:addTouchEventListener(function(sender, eventType)
if (0 == eventType) then
print("pressed")
btn:setColor(cc.c3b(200, 200, 200))
elseif (1 == eventType) then
print("move")
elseif (2== eventType) then
print("pushScene")
btn:setColor(cc.c3b(255, 255, 255))
cc.Director:getInstance():popScene()
elseif (3== eventType) then
print("cancel")
end
end)
--按钮无效
--btn:setEnabled(false)
end
function DogScene:onEnter()
end
function DogScene:onExit()
end
return DogScene
点击 此处进行下载 <-点这里去下载我的代码~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
效果如下:
让我们打开display.lua 这里面有一段如下注释。
可用的过渡效果有:
- crossFade 淡出当前场景的同时淡入下一个场景
- fade 淡出当前场景到指定颜色,默认颜色为 cc.c3b(0, 0, 0),可用 wrapSceneWithTransition() 的最后一个参数指定颜色
- fadeBL 从左下角开始淡出场景
- fadeDown 从底部开始淡出场景
- fadeTR 从右上角开始淡出场景
- fadeUp 从顶部开始淡出场景
- flipAngular 当前场景倾斜后翻转成下一个场景,默认从左边开始翻转,可以指定为:
- cc.TRANSITION_ORIENTATION_LEFT_OVER 从左边开始
- cc.TRANSITION_ORIENTATION_RIGHT_OVER 从右边开始
- cc.TRANSITION_ORIENTATION_UP_OVER 从顶部开始
- cc.TRANSITION_ORIENTATION_DOWN_OVER 从底部开始
- flipX 水平翻转,默认从左往右翻转,可用的附加参数同上
- flipY 垂直翻转,默认从上往下翻转,可用的附加参数同上
- zoomFlipAngular 倾斜翻转的同时放大,可用的附加参数同上
- zoomFlipX 水平翻转的同时放大,可用的附加参数同上
- zoomFlipY 垂直翻转的同时放大,可用的附加参数同上
- jumpZoom 跳跃放大切换场景
- moveInB 新场景从底部进入,直接覆盖现有场景
- moveInL 新场景从左侧进入,直接覆盖现有场景
- moveInR 新场景从右侧进入,直接覆盖现有场景
- moveInT 新场景从顶部进入,直接覆盖现有场景
- pageTurn 翻页效果,如果指定附加参数为 true,则表示从左侧往右翻页
- rotoZoom 旋转放大切换场景
- shrinkGrow 收缩交叉切换场景
- slideInB 新场景从底部进入,现有场景同时从顶部退出
- slideInL 新场景从左侧进入,现有场景同时从右侧退出
- slideInR 新场景从右侧进入,现有场景同时从左侧退出
- slideInT 新场景从顶部进入,现有场景同时从底部退出
- splitCols 分成多列切换入新场景
- splitRows 分成多行切换入新场景,类似百叶窗
- turnOffTiles 当前场景分成多个块,逐渐替换为新场景
]]
-- end --
我们来更改一下代码
local transition = display.wrapSceneWithTransition(nextScene, "zoomFlipX", 0.9)
效果如下:
我们再来更改一种
local transition = display.wrapSceneWithTransition(nextScene, "pageTurn", 0.9,true)
效果如下:
另外一个要说明的是
如果使replaceScene迁移场景,当前场景会被释放
display.replaceScene(transition)
如果使pushScene,当前场景会在栈底,下一个场景会进栈。
cc.Director:getInstance():pushScene(transition)