Cocos2d-x Studio与IDE的使用


环境搭建如前,Studio2.0.6,IDE1.01,framework 3.4rc1,Cocos2d-x 3.3final

环境搭建见:http://blog.csdn.net/riririreach/article/details/45391885


要实现的是在Studio中建项目,有两个场景,第一个场景是进入程序时显示的场景,场景中有一个按钮,按这个按钮就进入第二个场景


首先在Studio中新建项目:别忘了把选项都选上




这里建的项目直接发布到IDE中,模拟器运行后是一个小项目,背景是农场,上面有个是松鼠还是什么的从左向右滑,整个画面可以按住鼠标拖动

但这不是我想要的,暂时也还没到动画的时候,所以还是先在Studio里把资源编好,发布到IDE后再修改代码调用就行了


目标是两个场景切换,进入程序时显示的场景有个按钮,先弄这个场景

首先,我要把要用的资源文件导入,其实就是三张图片,两张是两个场景的背景图,一张是按钮的背景图

新建项目后有个MainScene.csd,一片黑,按某教程,在控件中拖个精灵过去



HelloWorld.png作为第一个场景的图片直接拖到精灵的位置就行


再从控件中拖个按钮过去


再将button_n.png拖到按钮属性中->背景样式->正常状态的白框中

再编辑一下文本字体颜色什么的就OK了



保存,建第二个场景

在项目上右键->新建文件



选场景,起个名字叫PlayScene吧,新建



后面的操作跟第一个场景一样,就是背景图用的是bg.png,而且这个场景不需要按钮



全部保存,最简单方法就是Ctrl+Shift+S

再依次发布资源,发布到IDE


这样项目就在IDE中打开了

有个问题,新项目src目录下没有刚刚建的两个场景的文件,只有一个main.lua和一个GameScene.lua,在GameScene.lua里会直接建一个场景

背景是个农场,一个小动物从左至右自己滑动,鼠标按住可拖动场景,和我们建的两个场景完全无关。


也就是说需要建立MainScene.lua和PlayScene.lua

然后在main.lua里进行相应的改动

在src下新建两个lua文件,建好都是空白的



MainScene.lua

local MainScene = class("MainScene",function()
    return cc.Scene:create()
end)

function MainScene.create()
    
    local scene = MainScene.new()
    local rootNode=cc.CSLoader:getInstance():createNodeWithFlatBuffersFile("MainScene.csb")
    scene:addChild(rootNode)
    
    return scene
end

return MainScene


PlayScene.lua,两个基本的组成一样,但前面MainScene.lua里面一会儿还要加上获取按钮和点击事件
local PlayScene = class("PlayScene",function()
    return cc.Scene:create()
end)

function PlayScene.create()

    local scene = PlayScene.new()
    local rootNode=cc.CSLoader:getInstance():createNodeWithFlatBuffersFile("PlayScene.csb")
    scene:addChild(rootNode)

    return scene
end

return PlayScene

先不急,看看main.lua,里面要把MainScene设上,原先的代码就不上,看改完的

local function main()
    collectgarbage("collect")
    -- avoid memory leak
    collectgarbage("setpause", 100)
    collectgarbage("setstepmul", 5000)

    -- initialize director
    local director = cc.Director:getInstance()

    --turn on display FPS
    director:setDisplayStats(true)

    --set FPS. the default value is 1.0/60 if you don't call this
    director:setAnimationInterval(1.0 / 60)
    
    cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(640, 960, 2)
    
    --create scene 
    local scene = require("MainScene")
    local gameScene = scene.create()
    --gameScene:playBgMusic()
    
    if cc.Director:getInstance():getRunningScene() then
        cc.Director:getInstance():replaceScene(gameScene)
    else
        cc.Director:getInstance():runWithScene(gameScene)
    end

end
因为我用的背景图是640*960的,所以分辨率就改成这样,原先是480*320

第二处原先写的是GameScene,现在改成了我造的MainScene

这样运行就显示我要的场景了


然后再回过头看MainScene.lua

得加东西让按钮生效

local MainScene = class("MainScene",function()
    return cc.Scene:create()
end)

function MainScene.create()
    
    local scene = MainScene.new()
    local rootNode=cc.CSLoader:getInstance():createNodeWithFlatBuffersFile("MainScene.csb")
    scene:addChild(rootNode)
    <span style="color:#ff0000;">local function onPlay()
        local ps=require("PlayScene")
        local playScene=ps.create()
        if cc.Director:getInstance():getRunningScene() then
            cc.Director:getInstance():replaceScene(playScene)
        else
            cc.Director:getInstance():runWithScene(playScene)
        end
    end
    local btn=rootNode:getChildByName("Button_1")
    btn:addTouchEventListener(onPlay)</span>
    return scene
end

return MainScene

红字是添加的部分

函数onPlay就是按钮的点击事件,即切换到PlayScene场景

下面local btn=rootNode:getChildByName("Button_1")是获取按钮

如下图,在Studio中点中按钮,右面属性中的名称就是这个name



然后就可以运行了,进入之后先是MainScene

点击Play按钮后



OK,目标实现


追加,分辨率设置

在main.lua中的语句

cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(640, 960, cc.ResolutionPolicy.SHOW_ALL)

这个是代表场景的分辨率是640*960,cc.ResolutionPolicy.SHOW_ALL代表是显示全部内容

在此语名前再加一行

cc.Director:getInstance():getOpenGLView():setFrameSize(320,480)

设置模拟器的尺寸是320*480,最终显示出来的就是比例不变,但缩小了一半全内容显示的


好了,完美解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值