https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往

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)


posted @ 2017-11-17 21:58  鱼酱  阅读(237)  评论(0编辑  收藏  举报

https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往