小小打灰机——1-制作游戏首界面和滚动背景
来源:互联网 发布:三维模具设计软件 编辑:程序博客网 时间:2024/06/01 22:17
start_game.h
#ifndef START_GAME__H_#define START_GAME__H_#include "cocos2d.h"USING_NS_CC;using namespace std;class StartGame : public cocos2d::Layer{public: static cocos2d::Scene* createScene(); virtual bool init(); Size visiblesize(); void start_play(); CREATE_FUNC(StartGame);};#endif
start_game.cpp
#include "start_game.h"#include "main_game.h"cocos2d::Scene* StartGame::createScene(){auto scene = Scene::create();auto layer = StartGame::create();scene->addChild(layer);return scene;}bool StartGame::init(){if (!Layer::init())return false;//游戏背景auto spr_pg = Sprite::create("ui/bg.png");spr_pg->setPosition(visiblesize().width/2,visiblesize().height/2);addChild(spr_pg);auto dic = Dictionary::createWithContentsOfFile("fonts/text.xml");auto str1 = (String*)(dic->objectForKey("title"));auto title = Label::create();title->setString(str1->getCString());title->setSystemFontSize(60);title->setPosition(visiblesize().width/2,visiblesize().height- title->getContentSize().height);title->setColor(Color3B(174,111,23));addChild(title);//帧动画auto animation = Animation::create();for(int i=1; i<=4; i++){auto spr_name = String::createWithFormat("ui/start%d.png",i);animation->addSpriteFrameWithFile(spr_name->getCString());}animation->setDelayPerUnit(0.3f);animation->setLoops(-1);//帧动画播放次数——为-1时无限循环auto animate = Animate::create(animation);auto zhensprite = Sprite::create("ui/start1.png");zhensprite->setPosition(visiblesize().width/2, visiblesize().height/2);addChild(zhensprite);zhensprite->runAction(animate);auto str2 = (String*)(dic->objectForKey("play"));auto btn_label = Label::create();btn_label->setString(str2->getCString());btn_label->setSystemFontSize(40);auto start_menu = MenuItemLabel::create(btn_label, CC_CALLBACK_0(StartGame::start_play, this));start_menu->setPosition(visiblesize().width/2, visiblesize().height*0.3);auto menu = Menu::create(start_menu, NULL);menu->setPosition(Size::ZERO);addChild(menu);return true;}Size StartGame::visiblesize(){return Director::getInstance()->getWinSize();}void StartGame::start_play(){log("ss");Director::getInstance()->replaceScene(TransitionFadeTR::create(0.5, MainGame::createScene()));}
滚动背景的难点在于,首先要用两张相同图片进行y坐标移动。
另外,代码中使用到了onEnterTransitionDidFinish()和onExit()函数,这是我之前没有接触到的,并且还有一个与之差异的onEnter()
具体差异是:
onEnter() 是在进入场景的一瞬间就开始执行了。
onEnterTransitionDidFinish() 是在完全进入场景后开始执行的。
main_game.h
#ifndef MAIN_GAME__H_#define MAIN_GAME__H_#include "cocos2d.h"USING_NS_CC;using namespace std;class MainGame : public cocos2d::Layer{public: static cocos2d::Scene* createScene(); virtual bool init(); Size visiblesize(); void onEnterTransitionDidFinish(); void update(float t); CREATE_FUNC(MainGame); private:Sprite* spr_bg1_;Sprite* spr_bg2_;};#endif
main_game.cpp
#include "main_game.h"cocos2d::Scene* MainGame::createScene(){auto scene = Scene::create();auto layer = MainGame::create();scene->addChild(layer);return scene;}bool MainGame::init(){if (!Layer::init())return false;//背景1spr_bg1_ = Sprite::create("ui/bgs.png");spr_bg1_->setPosition(visiblesize().width/2 , visiblesize().height/2);this->addChild(spr_bg1_);//背景2spr_bg2_ = Sprite::create("ui/bgs.png");spr_bg2_->setPosition(ccp(visiblesize().width/2, spr_bg1_->getContentSize().height - 2));this->addChild(spr_bg2_);return true;}Size MainGame::visiblesize(){return Director::getInstance()->getWinSize();}void MainGame::onEnterTransitionDidFinish(){Layer::onEnterTransitionDidFinish();scheduleUpdate();}void MainGame::update(float t){//实现背景滚动float y1 = spr_bg1_->getPositionY() - 3;float y2 = spr_bg2_->getPositionY() - 3;spr_bg1_->setPositionY(y1);spr_bg2_->setPositionY(y2);//判断背景图片是否超出边界if (y1 < -spr_bg1_->getContentSize().height/2){spr_bg1_->setPositionY(spr_bg2_->getPositionY() + spr_bg2_->getContentSize().height - 2);}else if (y2 < -spr_bg2_->getContentSize().height/2){spr_bg2_->setPositionY(spr_bg1_->getPositionY() + spr_bg1_->getContentSize().height - 2);}}
阅读全文
0 0
- 小小打灰机——1-制作游戏首界面和滚动背景
- android游戏开发之我的小小游戏1——五子棋游戏之界面的优化、代码整理
- 制作一个小小的游戏
- Unity3D---游戏背景制作
- Unity3D---游戏背景制作
- 使用cocos2d-x3.0和物理引擎制作滚动背景
- 2D游戏引擎(十一)—— 向游戏引擎添加滚动背景支持
- 游戏制作第三棒——有界面版五子棋
- 制作游戏背包界面
- 一款启动界面加加上滚动背景的 打飞机游戏
- android游戏开发之我的小小游戏2——连连看游戏2之绘制基本的界面及触摸相关
- Cocos2d-x3.0游戏实例之《别救我》第三篇——循环滚动背景
- [cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 03.游戏界面 背景层实现滚动
- android游戏开发之我的小小游戏1——五子棋游戏1之绘制棋子与棋盘
- android游戏开发之我的小小游戏1——五子棋游戏2之判断输赢
- android游戏开发之我的小小游戏1——五子棋游戏3之悔棋与重新开始
- android游戏开发之我的小小游戏1——五子棋游戏5之蓝牙对战
- android游戏开发之我的小小游戏1——五子棋游戏5之网络对战
- 通达oa破解版/通达oa破解版下载/通达oa2017破解版
- 番茄工作法——预估(笔记)
- 数据结构顺序表的基本算法
- Online Judge 错误提示
- #leetcode编程日记#547. Friend Circles
- 小小打灰机——1-制作游戏首界面和滚动背景
- 如何写SysV服务管理脚本
- 《C++ Concurrency in Action》笔记7 mutex(3)pop和top问题之示例
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B题 coin
- SSH框架搭建
- ubuntu16.04 ROS环境下配置和运行SVO
- ubuntu16.04主题美化和软件推荐
- 老师分配办公室的应用练习
- CRF模型在NLP中的运用