cocos基础教程(3)cocos3.x版本⽬录结构介绍
简介
cocos2d-x-3.x版本进⾏了很多优化,⽐如:将TTF字体⽤Atlas缓存,节点重排序官⽅声称提升了10倍速度,查、移除节点⽅⾯也提⾼了10%,拆分渲染层到独⽴的线程运⾏;
另外,coco2d-x3.x版本还采⽤C++标准,⼤量使⽤std::vector, std::function,std::bind, std::thread、auto等C++11的新标准,对于笔者来说,最令⼈激动的莫过于⽀持C++11的Lambda表达式,去掉了Objective-c的代码风格,对于命名规范等都往C++⽅向靠拢;
另外,所有的类都去掉CC前缀,有些可能会导致跟其他SDK的API冲突的地⽅,新加⼊了__双下划线前缀,⽐如:CCLabelTTF变成LabelTTF;CCArray变成__Array;
增加了⼀套新的⽐较完整的GUI控件;笔者⼤概看了下,包括Button、Label、slider、checkbox、ImageView、Loading、
PageView、ScrollView、ListeView、TextField等常⽤的UI控件,基本上所有的新GUI控件都继承⾃UIWidget基类,⽽UIWidget继承⾃Object,除了UILayer(继承⾃Layer)、UILayoutParameter(Object)、UIInputManager输⼊事件管理类等少数⼏个类除外,试⽤了⼀下, 似乎所有的新GUI控件需
要添加到UILayer这个新的控件上⽽不能直接添加到原有的Node节点上 , UILayer才可以直接添加到Cocos2d-x的原有的Node节点上,见如下代码,好不好⽤暂时不发表意见:
auto pLayer = UILayer::create();
this->addChild(pLayer);
auto pTextField = UITextField::create();
xcode入门pTextField->setPosition(Point(s.width / 2, s.height - 100));
pTextField->setTouchEnabled(true);
pTextField->setText("1000");
pTextField->attachWithIME();
pTextField->setColor(Color3B(140, 63, 63));
pTextField->setFontName("Arial");
pTextField->setFontSize(35);
pTextField->setDeleteBackward(true);
pLayer->addWidget(pTextField);
事件机制改动⽐较⼤,原来Layer上启⽤的重⼒加速计事件机制和触摸输⼊事件机制不能再使⽤,需要⾃⼰⼿动加⼊监听事件,可以在任何Node节点上加⼊事件监听。见如下代码:
void FSMainLayer::onEnter() {
LayerGradient::onEnter();
auto listener = EventListenerTouchOneByOne::create();
//listener->onTouchBegan = CC_CALLBACK_2(FSMainLayer::onTouchBegan, this);
//listener->onTouchMoved = CC_CALLBACK_2(FSMainLayer::onTouchMoved, this);
//listener->onTouchEnded = CC_CALLBACK_2(FSMainLayer::onTouchEnded, this);
//listener->onTouchCancelled = CC_CALLBACK_2(FSMainLayer::onTouchCancelled, this);
/
/此处可以使⽤上述注释掉的代码来写触摸事件的回调,也可以⽤lambda表达式来实现回调,笔者展⽰下如何在新版本使⽤Lambda表达式
listener->onTouchBegan = [&](Touch *touch, Event *unused_event)->bool {
return true;
};
listener->onTouchMoved = [&](Touch *touch, Event *unused_event) {
};
listener->onTouchEnded = [&](Touch *touch, Event *unused_event) {
};
listener->onTouchCancelled = [&](Touch *touch, Event *unused_event) {
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
}
内存管理⽅⾯,继续保留了Objective-c风格的内存计数机制,但是需要注意的是使⽤clone()代替了copy(),如果继续使⽤copy()程序能通过编译,但运⾏时将会崩溃
新加了对Cocostudio⽀持,并⽀持直接解析Flash的DragoneBones⾻骼动画
物理引擎集成到Cocos2d-x⼯程⾥,更易于使⽤
桌⾯平台⽀持⿏标
添加JS和Lua绑定
提升对64-bit架构的⽀持
⽀持freetype2
采⽤python脚本来创建新⼯程等
cocos2d-x-3.0beta的⽬录结构层次划分更加合理,如下图⽰,下⾯开始对每个⽬录分别介绍:
1、其中sample⽬录是存放Cocos2d-x的所有例⼦⼯程(包括C++、Lua、Javascript三种不同的语⾔版本),WatermelonWithMe:⼀个js 脚本写的控制着满载西⽠的⼩车并不掉落⼀个西⽠地⾛到终点的物理游戏例⼦,⾮常有趣,;MoonWarriors:⼀个类似全民飞机⼤战的js脚本游戏例⼦;CocosDragonJS:⼀个JS脚本写的类似是男⼈就上⼀百层之类的敏捷游戏例⼦;CrystalCraze:⼀个JS脚本写的宝⽯消除类游戏;Hello例⼦:分别为C++版本的HelloCpp、Lua版本的HelloLua;SimpleGame则是⼀个C++语⾔实现的射击⼩游戏;JS Common⽬录则放了⼀些JS脚本的常⽤⼯具函数等;Lua Common则放了Lua脚本的常⽤⼯具函数等;其中最具参考价值就是分别⽤三种语⾔版本的cocos2d-x的API单元测试例⼦:TestCpp、TestLua、TestJavascript。
2、通过build⽬录,可以打开不同平台的版本的Sample⾥的⼯程例⼦,如下图是Mac版和iOS版的⼯程例⼦,
对于Mac或iOS直接双击build⽬录下的deproj⽂件即可打开sample⽬录⾥的所有⼯程例⼦:
对于Linux平台,通过如下命令安装并运⾏sample⽬录⾥的⼯程例⼦:
cd /Users/ericli/Documents/cocos2d-x-3.0beta/build
./install-deps-linux.sh
cmake ..
make
bin/hellocpp/hellocpp
windows平台,也是双击打开build⽬录下的cocos2d-win32.vc2012.sln⽂件即可。
android平台,通过如下命令运⾏sample⽬录⾥的⼯程例⼦:
cd /Users/ericli/Documents/cocos2d-x-3.0beta/build
python ./android-build.py hellocpp
3、cocos⽬录是cocos2d-x引擎的核⼼代码⽬录,⽬录下⼜分为:2d(核⼼图形引擎、事件响应引擎、底层平台⽀持)、audio(不同平台的⾳频引擎⽀持)、base(Cocos2d-x模仿Objective-c的Foundation框架的⼀些基本类以及3.0增加的模仿C++11的容器类扩展⽀持,⽐如:__Array、__Dictionary、Data、Vector等)、editor-support(编辑器⽀持,包括cocosbuilder场景编辑器、cocostudio编辑器(包括UI、动画、场景、数据)、spine⾻骼动画编辑器)、gui(Viva童鞋贡献的⼀套新的GUI控件库)、math(cocos2d-x⾃带的数学库,提供了⼀些OpenGL底层绘制⽤到的⼀些数据结构以及参数设置)、network(提供了Http通讯和Soket通讯)、physics(集成chipmunk物理引擎,相⽐alpha版去掉了对box2d的⽀持,可能是考虑到chipmunk更轻量易⽤吧)、storage(本地存储数据
库⽀持)、scripting(lua和javascript脚本⽀持)。
4、关于docs⽂件,⾥⾯只要包含了⽣成cocos2d-x的配置⽂件,可以通过doxygen去⽣成cocos2d-x⽂件,不过需要确保安装了doxygen,可以通过Homebrew软件包管理下载安装(请先⾃⾏安装Homebrew,在终端输⼊命令即可安装:ruby -e "$(curl -fsSL
raw.github/Homebrew/homebrew/go/install)"),在终端输⼊如下命令:
$ sudo brew doctor
Your system is ready to brew.
$ brew search doxygen
doxygen
$ brew install doxygen
安装doxygen成功后,输⼊如下命令⽣成cocos2d-x的⽂档:
$ cd /Users/ericli/Documents/cocos2d-x-3.0beta/docs
$ sudo fig
直到见到下图字样,表⽰⽂档⽣成成功。
此时在docs⽬录下,可以看见多了html⽬录,⾥⾯有很多html⽂档,双击即可⽤浏览器打开⽂档,如下图
5、extensions⽬录则是⼀些对Cocos2d-x主引擎的扩展类,包括资源管理类AssetsManager和CCEditBox、CCScrollView、CCPhysicsSprite等。
6、external⽬录下是所有cocos2d-x引擎引⽤的开源库,如下图,其中值得注意的是cocos2d-x3.0新加⼊了freetype2库,这是⼀个⽂字布局的开源库,可以实现很强⼤的富⽂本功能,许多⼤型的端游都采⽤该开源库实现聊天富⽂本功能。
7、licenses就存放MIT许可证等证书⽂件,不详细介绍。
8、plugin⽬录包含了admob(移动⼴告)、alipay(⽀付宝)、flurry(移动应⽤统计分析平台)、nd91(91助⼿平台)、qh360(奇虎360游戏平台)、twitter(twitter社交平台)、uc(UC游戏平台)、umeng(友盟平台)、weibo(新浪微博平台)等第三⽅插件的集成管理以及js脚本⽀持。
9、template⽬录提供了⽣成C++、lua和Javascript三种语⾔的跨平台⼯程模板。
10、tools⽬录下放了各种功能的python⼯具⽂件,包括C++类映射为lua和javascript脚本的⼯具、创建新⼯程的⼯具等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论