cocos-creator使用记录1_项目结构



1.关于cocos creator项目结构
这里以官方的“范例集合”演示demo为分析对象。
先到cocos creator 教程的演示和范例项目页面,如下
http://docs.cocos.com/creator/manual/zh/
直接点击其上页面中的“范例集合”会跳转到Git,如下
https://github.com/cocos-creator/example-cases


其项目结构如下:
assets
--cases        //所有范例
  --01_graphics
    --01_sprite
--02_particle
--03_texture_format
  --02_ui
    --01_widget
--02_label
--03_button
--04_progressbar
--05_scrollView
--06_layout
--07_change_canvas_anchor
--08_editBox
--09_videoplayer
--10_webview
--11_richtext
--12_slider
--13_toggle
--14_pageView
--15_mask
  --03_gameplay
    --01_player_control
--02_actions
--03_animation
  --04_audio
  --05_scripting
    --01_properties
--02_prefab
--03_events
--04_scheduler
--05_cross_reference
--06_life_cycle
--07_asset_loading
--08_module
--09_singleton
--10_loadingBar
--11_network
--12_pool
  --camera
  --collider
    --Category
--Hittest
--Platform
--Shape
--Shooter
--Tag
--Utils
  --dragonbones
  --graphics
  --motionStreak
  --native_call
  --spine
  --tiledmap
--i18n         //本地化(中英文)、一些提示说明
--res          //通常我们使用的所有资源就放在这个文件夹下
  --animation  //动画
  --atlas      //图集(可以使用TexturePackerGUI将小图片打成大图)
  --dragonbones//骨骼动画
  --imported   //导入文件
  --prefabs    //预制文件
  --textures   //图片
--resources    //这里放的是要在脚本中动态加载的资源,
  //比如需要手写代码创建一个Sprite时,其图片
  //必须放在这个文件夹下。想查看此文件夹的详
  //细描述,你可以在你的项目下创建这个文件夹,
  //在编辑器属性面板会有这个文件夹的说明。
  --audio      //音频文件(当不需要动态加载时,要放在res下)
  --font       //字体文件(当不需要动态加载时,要放在res下)
  --tilemap    //2d瓦片
  --...        //以下省略
--scripts      //按道理说,所有脚本应该放在这里,但实际上,
               //这个文件夹下只放了全局脚本,原因就是这个
  //工程文件中的示例太多了,于是,创建者从新
  //创建了一个case文件夹放对应demo的脚本


以上至少50个demo,就是你学习写cocos creator的最佳教程,甚至
可以直接用在你的项目里。
  
  
以下是我使用的项目结构:
assets
--res
  --animation
  --audio
  --prefab
  --texture
--resources     
--scene
  --game.fire   //游戏界面场景文件
  --logo.fire   //logo界面场景文件
  --start.fire  //开始界面场景文件
--script        //我的所有脚本都放在这里
注意:最好一个界面对应一个场景文件,比如,logo界面就对应
     logo.fire,这样打开它,只需要修改logo界面相关的东西。
不同场景之间切换,可使用如下代码:
cc.director.loadScene("start"); //切换到开始界面
这样的好处是,你可以在切换场景之前给当前界面添加一个
过渡动画,如下:
var fade = cc.fadeOut(1.0);
var callback = cc.callFunc(this.goToStart, this);
this.node.runAction(cc.sequence(fade, callback));
其中this.goToStart中添加的就是前面切换场景的代码。


2.场景切换问题
2.1.预加载
若在游戏界面,想快点切到开始界面,可以在游戏界面的onLoad函数中预加载开始界面
Game.js------------
onLoad: function() {
cc.director.preloadScene("start");
},
另外,可以在编辑器中选中对应场景文件,在右侧的属性检查器中勾选“延迟加载资源”。
一些预制文件、特效、动画就会在使用时才加载。进一步提高切场景的速度。


2.2.界面合一
若场景切换出现明显的闪黑,这一般会出现在使用的是亮色调背景时,若游戏比较小,
可以考虑将界面合在一起。一个节点一个界面,如下
--scene
  --all.fire   //界面场景文件
  
all场景结构
Canvas  //All.js要挂接在这里,其负责不同界面节点的显示
--logo  //logo界面节点,Logo.js
--start //开始界面节点,Start.js
--game  //游戏界面节点,Game.js


注意:这种情况下,因为没有了切场景,故界面节点显示时,对应脚本中的onLoad只会
   执行一次,每次需要通过onEnable函数重新初始化,且要用一个变量保存是否是首次
   显示界面,以防止第1次的onLoad和onEnable重复初始化。
   另外,使用这种合一的模式,可以实现一些切场景达不到的动画效果,比如,在开始
   界面点击开始按钮进入游戏界面时,可以左移开始界面和游戏界面,达到水平滚动的
   效果。
   
3.3.按数字键切场景
以下是官方的demo-responsive-ui-master示例代码片段。
onLoad: function () {
var self = this;
this.canLoad = true;
cc.game.addPersistRootNode(this.node); //设置当前节点为常驻节点
this.sceneList = cc.game._sceneInfos; //获得项目里的所有场景
cc.log(this.sceneList);
cc.director.loadScene('01_align_basic');
//按键监听
var listener = {
event: cc.EventListener.KEYBOARD,
onKeyPressed: function (keyCode, event) { //按下按钮1-6切换场景
cc.log('keyDown: ' + keyCode);
var idx = keyCode - 48; //若你的键盘上的数字键keyCode是从96开始的,请替换为keyCode - 96
if (idx >= 0 && idx < self.sceneList.length && self.canLoad) {
self.loadScene(self.sceneList[idx].url); //场景名字
}
}
}
cc.eventManager.addListener(listener, this.node);
},
loadScene: function(name) {
this.canLoad = false;
cc.director.loadScene(name, this.onLoadSceneFinish.bind(this)); 
},
onLoadSceneFinish: function() { //场景加载完的回调函数
this.canLoad = true;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值