Cocos2d-X 3.4版-游戏继续,游戏重新开始,回到主界面的实现《赵云要格斗》
来源:互联网 发布:色彩校正软件 编辑:程序博客网 时间:2024/05/12 13:20
下一节开始要用cocostudio制作主界面,为了使用最新版的Cocos Studio2.1,需要将引擎升级到3.4.
下面是3.4的升级说明。对于我们的项目来说,机会没什么影响,所以只需要用新引擎创建一个工程,
我们甚至只需要将classes,resource进行简单地覆盖就可以完成引擎升级。
更加优化的渲染流程:改进了2D和3D渲染,《Fantasy Warrior3D》现在不需要hack引擎就可以运行
更小的包体积:iOS和Android平台上,使用系统网络库替换了第三方库libcurl,iOS的游戏包大小从5.6M缩小到4.3M, Android的APK游戏包大小从2.9M缩小到2.0MCocos Package Manager: 引擎扩展模块化框架,使得基于Cocos2d-x的扩展,更方便地集成与发布,现在GAF已经应用到这个框架中
视锥体裁剪功能:通过计算裁剪掉在屏幕上不可见物体,降低渲染开销,为4.0的全3D和大规模场景提供支持
在这一节里,我从Evakaka大神的博客里学到不少东西,以前我做遮罩从来没用过这样的
方式,现在想起来,真是既简单有粗暴,实在惭愧。
总的来说,这以功能实现起来,在原理上还是非常显而易见的,只不过在具体的实现上,还
是要见仁见智。
主要来说,我们需要新建一个Scene,当我们按下暂定按钮时,见我们新建的这个Scene push出来,
,之所以不用replaceScene是因为,我们总不能一按暂定按钮回来的时候游戏就重新开始吧。
GamepauseScene.h
//// GamepauseScene.h// Fight//// Created by Cytzrs on 15/2/5.////#ifndef __Fight__GamepauseScene__#define __Fight__GamepauseScene__#include <iostream>#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC_EXT;USING_NS_CC;class GamepauseScene : public Layer{public: static Scene* createScene(RenderTexture*); bool init(); CREATE_FUNC(GamepauseScene); void attackAct1(Ref *sender, Control::EventType controlEvent); void attackAct2(Ref *sender, Control::EventType controlEvent); void attackAct3(Ref *sender, Control::EventType controlEvent);//private:// ControlButton* attackBtn1;// ControlButton* attackBtn2;// ControlButton* attackBtn3;};#endif /* defined(__Fight__GamepauseScene__) */
GamepauseScene.cpp
//// GamepauseScene.cpp// Fight//// Created by Cytzrs on 15/2/5.////#include "GamepauseScene.h"#include "cocos-ext.h"USING_NS_CC_EXT;#include "HelloWorldScene.h"Scene* GamepauseScene::createScene(RenderTexture* render){ auto scene = Scene::create(); auto layer = GamepauseScene::create(); scene->addChild(layer, 1); auto s = Director::getInstance()->getVisibleSize(); auto bg = Sprite::createWithTexture(render->getSprite()->getTexture()); bg->setPosition(s/2); bg->setFlippedY(true); bg->setColor(cocos2d::Color3B::GRAY); scene->addChild(bg); return scene;}bool GamepauseScene::init(){ while(1) { if(!Layer::init()) return false; auto s = Director::getInstance()->getVisibleSize(); ControlButton* attackBtn1 = ControlButton::create("继续游戏", "fonts/Marker Felt.ttf", 30); attackBtn1->setPosition(s/2); this->addChild(attackBtn1, 7); attackBtn1->addTargetWithActionForControlEvents(this, cccontrol_selector(GamepauseScene::attackAct1),Control::EventType::TOUCH_DOWN); ControlButton* attackBtn2 = ControlButton::create("重新游戏", "fonts/Marker Felt.ttf", 30); attackBtn2->setPosition(s.width/2, s.height/2-100); this->addChild(attackBtn2, 7); attackBtn2->addTargetWithActionForControlEvents(this, cccontrol_selector(GamepauseScene::attackAct2),Control::EventType::TOUCH_DOWN); ControlButton* attackBtn3 = ControlButton::create("回到主界面", "fonts/Marker Felt.ttf", 30); attackBtn3->setPosition(s.width/2, s.height/2-200); this->addChild(attackBtn3, 7); attackBtn3->addTargetWithActionForControlEvents(this, cccontrol_selector(GamepauseScene::attackAct3),Control::EventType::TOUCH_DOWN);//// attackBtn2 = ControlButton::create("ATTACK", "fonts/Marker Felt.ttf", 30);// attackBtn2->setPosition(Vec2(visibleSize.width-200, 100));// this->addChild(attackBtn2, 7);// // attackBtn3 = ControlButton::create("ATTACK", "fonts/Marker Felt.ttf", 30);// attackBtn3->setPosition(Vec2(visibleSize.width-200, 100));// this->addChild(attackBtn3, 7); return true; } return false;}void GamepauseScene::attackAct1(Ref *sender, Control::EventType controlEvent){// auto scene = HelloWorld::createScene(); Director::getInstance()->popScene();}void GamepauseScene::attackAct2(Ref *sender, Control::EventType controlEvent){ auto scene = HelloWorld::createScene(); Director::getInstance()->replaceScene(scene);}void GamepauseScene::attackAct3(Ref *sender, Control::EventType controlEvent){ // auto scene = HelloWorld::createScene(); //现在还没有创建主界面,暂且留白 Director::getInstance()->popScene();}
工程源码
PS:多写博客,帮助自己,方便他人!
2 0
- Cocos2d-X 3.4版-游戏继续,游戏重新开始,回到主界面的实现《赵云要格斗》
- Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
- Cocos2d-x使用Cocos Studio制作界面并应用---之游戏开发《赵云要格斗》(11)
- Cocos2d-x游戏开发《赵云要格斗》 (一) cocos2dx3.3
- 如何制作一个横版格斗过关游戏 Cocos2d-x
- Cocos2d-X开发中国象棋《六》游戏开始功能的实现
- Cocos2d-X 3.4版-扣血飘字 《赵云要格斗》
- Cocos2d-X 3.4版-怪物的AI《赵云要格斗》
- 重新学习COCOs2D-X版本2.2.3开始---第一篇引擎的游戏入口
- cocos2d-x 一个简单的游戏界面
- cocos2d-x游戏开发 跑酷(一)开始界面
- cocos2d-x游戏开发 跑酷(一)开始界面
- cocos2d:如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4
- cocos2d:如何制作一个横版格斗过关游戏(2) Cocos2d-x 2.0.4
- cocos2dx3.x《格斗》类游戏实现人物选择界面(二)
- cocos2dx3.x《格斗》类游戏加载界面(一)
- Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要格斗》(1) cocos2dx 3.3移植版
- Cocos2d-x自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗》(2) cocos2dx 3.3移植版
- leetcode:First Missing Positive
- 【Java】Eclipse新建的Java文件自动生成主函数、控制台输出行数不再受限制
- C++设计模式 -- 单例模式
- 阿里巴巴进货技巧
- 阿里巴巴进货技巧
- Cocos2d-X 3.4版-游戏继续,游戏重新开始,回到主界面的实现《赵云要格斗》
- SearchView 修改字体颜色和Hint颜色
- Asp.net MVC3 文本编辑器KindEditor使用及图片上传浏览
- 阿里巴巴进货技巧
- 翻页js
- Java编译 解释
- asp.net mvc4 使用KindEditor文本编辑器
- iOS笔记
- 页面布局思维