cocos-lua学习笔记(七)场景迁移及迁移动画

举报
鱼酱 发表于 2022/01/06 23:01:37 2022/01/06
【摘要】 如何使用cocos-lua去迁移场景呢,我下面的例子详细的说明了如何使用。 使用的版本是3.7,也就是目前最新版本的引擎。 主场景类 local MainScene = class("MainScene", function() return display.newScene("MainScene...


如何使用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)


文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。

原文链接:yujiang.blog.csdn.net/article/details/78565654

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。