ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-04-23-飞机大战-001-游戏开始界面

2021-04-23 17:01:44  阅读:231  来源: 互联网

标签:04 SceneStart 23 auto IMAGE constexpr 001 MENU png


2021-04-23-飞机大战-001

原始项目介绍

参考2014年不记得当时从哪里得到的源码了,作者使用coocs2d引擎做的一个飞机大战游戏,最近打算学习了解一下这个引擎,因此打算复现学习一下。
原始代码 https://github.com/DoubleYuanL/Plane-X.git
Plane-0是原始代码,源文件和 资源文件均在,
因为暂时没有配置当时的环境,所以没有直接复现跑过(安装了cocos2d-x-4.0,居然不是向下兼容的 ,但想想没必要学习之前的库了,就放弃安装,直接上源码重新复现)。

环境介绍

cocos2d-x-4.0 + vs2019

开始

1:飞机大战开始界面

1.0:SceneStart场景开始界面类的构造

SceneStart头文件
“SceneStart.h”

#ifndef __SceneStart_H__
#define __SceneStart_H__

#include "Util.h"

class SceneStart :public Layer
{
public:
	SceneStart() {};
	~SceneStart() {};

	CREATE_FUNC(SceneStart);	//cocos2d初始函数
	bool init();

	void Start();				//开始按钮
	void About();				//关于按钮
	void Quit();				//退出程序
};
#endif

1.1:背景的添加

存放一般函数位置
Util.h

	static Sprite* addSpriteBackGround(Node* parent, const char* filename, int tag = 0)
	{
		Sprite* sprite = Sprite::create(filename);
		sprite->setAnchorPoint(Vec2(0, 0));
		sprite->setTag(tag);
		
		Texture2D::TexParams tp = { backend::SamplerFilter::LINEAR , backend::SamplerFilter::LINEAR,
			backend::SamplerAddressMode::MIRROR_REPEAT , backend::SamplerAddressMode::MIRROR_REPEAT };
		sprite->getTexture()->setTexParameters(tp);
		
		auto rect = Rect(0, 0, visibleSize.width, visibleSize.height);
		sprite->setTextureRect(rect);
		
		parent->addChild(sprite);		
		return sprite;
	}

创建一个精灵对象,参数:背景文件名(图片形式);
设置精灵的Anchor点为Vec2(0,0),即为精灵的左下坐标,设置tag标记;
设置纹理参数,后两个参数为镜像重复
设置显示区域rect,
添加至当前节点。

1.2:按钮的添加

SceneStart.cpp

	MenuItem* itemStart = MenuItemImage::create(IMAGE_MENU_START_NORMAL,
		IMAGE_MENU_START_SELECT);
	itemStart->setCallback(CC_CALLBACK_0(SceneStart::Start, this));
	MenuItem* itemAbout = MenuItemImage::create(IMAGE_MENU_ABOUT_NORMAL,
		IMAGE_MENU_ABOUT_SELECT, CC_CALLBACK_0(SceneStart::About, this));
	MenuItem* itemQuit = MenuItemImage::create(IMAGE_MENU_QUIT_NORMAL,
		IMAGE_MENU_QUIT_SELECT, CC_CALLBACK_0(SceneStart::Quit, this));

三个按钮功能类似,代码一致;
创建图像按钮,参数:1:未按下图像;2:按下图像;3:回调函数,不需要参数类型。
三个按钮的回调函数可以暂时不写,仅仅声明一个空类即可。

1.3:菜单添加

SceneStart.cpp

	Menu* menu = Menu::create();
	addChild(menu);
	//在这之前声明定义好三个按钮
	menu->addChild(itemStart);
	menu->addChild(itemAbout);
	menu->addChild(itemQuit);
	menu->alignItemsVertically();

创建菜单,添加按键,设置摆放位置。

1.4:全局图片宏定义

存放全局资源文件,头文件等。
Common.h

#ifndef __COMMON_H__
#define __COMMON_H__

#include "cocos2d.h"
#include "cocos-ext.h"
#include <iostream>
#include <string>

using namespace std;
#include "external/tinyxml2/tinyxml2.h"

USING_NS_CC;
USING_NS_CC_EXT;

constexpr auto IMAGE_BACKGROUND = "Background/background.png";

constexpr auto IMAGE_MENU_START_NORMAL = "Button/btn1_normal.png";
constexpr auto IMAGE_MENU_START_SELECT = "Button/btn1_push.png";
constexpr auto IMAGE_MENU_ABOUT_NORMAL = "Button/btn2_normal.png";
constexpr auto IMAGE_MENU_ABOUT_SELECT = "Button/btn2_push.png";
constexpr auto IMAGE_MENU_QUIT_NORMAL = "Button/btn3_normal.png";
constexpr auto IMAGE_MENU_QUIT_SELECT = "Button/btn3_push.png";
constexpr auto IMAGE_MENU_BACK_NORMAL = "Button/btn_back_normal.png";
constexpr auto IMAGE_MENU_BACK_SELECT = "Button/btn_back_press.png";

constexpr auto XML_ABOUT = "About/about.xml";
constexpr auto PLIST_ABOUT = "About/about.plist";
constexpr auto JSON_ABOUT = "About/about.json";

constexpr auto FONTS_FILE = "fonts/Marker Felt.ttf";
constexpr auto FONTS_NUM_FILE = "fonts/num.jpg";

constexpr auto ANI_BOOM = "Plane/PFBoom.plist";
#endif

代码实现效果


背景为镜像对称,中间三个按钮。点击按钮暂时无响应。

源码

Plane-001代码 https://github.com/DoubleYuanL/Plane-X.git

标签:04,SceneStart,23,auto,IMAGE,constexpr,001,MENU,png
来源: https://blog.csdn.net/qq_34792438/article/details/116059347

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有