Cocos2d-x Studio与IDE的使用

来源:互联网 发布:流水账记账软件 编辑:程序博客网 时间:2024/06/05 07:49


环境搭建如前,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 sceneendreturn 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 sceneendreturn 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)    endend
因为我用的背景图是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 sceneendreturn 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