cocos2d-x 基础系列 (03) 设计主界面以及Sprite类的学习

本文围绕cocos2d-x游戏引擎,详细讲解如何设计主界面,并深入探讨Sprite类的使用。在MainScene.cpp中初始化主界面时,通过C++的vector创建菜单项,并调整字体大小以适应屏幕。同时,文章提到了利用Vec2获取屏幕坐标的方法。接下来,文章介绍了Sprite类的基础知识,并引用了部分代码示例,帮助读者理解其在实际项目中的应用。
摘要由CSDN通过智能技术生成

这篇主要介绍Sprite类,在介绍这个类之前,先设计一个点开游戏进入游戏的主界面。

只修改MainScene.cpp中的init函数

其中用到了C++标准容器vector创建多个menuItemLabel,这个懂C++的还比较好理解。

有点匪夷所思的是Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2).x利用这种方式获取左边点的X左边,它不就是等于origin.x + visibleSize.width/2。

还有就是提供的例子上,设计的字体大小不大合适,一个屏幕装不下这么多item,把字体改小了,可以设计一个滑动的当做拓展。

#include "MainScene.h"
#include "Sprites/Sprites.h"

USING_NS_CC;

Scene *MainScene::createScene() {
	// 'scene' is an autorelease object
	
	auto scene = Scene::create();

	// 'layer' is an autorelease object
	auto layer = MainScene::create();

	// add layer as a child to scene
	scene->addChild(layer);

	// return the scene
	return scene;
}

// On "init" you need to initialize your instance
bool MainScene::init()
{
	// Super init first
	if (!Node::init())
		return false;
	
	Size visibleSize = Director::getInstance()->getVisibleSize();
	// Return visible origin coordinate of the OpenGL view in points
	Vec2 origin = Director::getInstance()->getVisibleOrigin();
	
	// Add a menu item with "X" image, which is clicked to quit the program
	// Add a "close" icon to exit the progress, it's an autorelease object
	auto closeItem = MenuItemImage::create("CloseNormal.png",
			"CloseSelected.png", CC_CALLBACK_1(MainScene::onMenuCloseCallback, this));
	
	// getContentsSize()
	// Returns the untransoformed size of the node
	
	// default value (0.5, 0.5)
	closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2,
		origin.y + closeItem->getContentSize().height/2));
	
	// create menu, it's an autorelease object
	auto closeMenu = Menu::create(closeItem, NULL);
	closeMenu->setPosition(Vec2::ZERO);
	this->addChild(closeMenu, 1);

	// Add main menu
	auto mainMenu = Menu::create();
	
	// items of distance
	int index = 0;
	std::vector<std::string> vChapters = {"Sprites", "Actions",
			"BuildingAndTransitioningScenes", "UIComponents",
			"OtherNodeTypes", "EventDispatcher", "Scripting",
			"VirtualReality", "FileSystemAccess"};

	std::vector<MenuItemLabel *> vMenuItems;
	
	// create the menu items for each other
	for (int i = 0; i < vChapters
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值