cocos2d-x飞机大战——加载页面到游戏菜单,再从游戏菜单进入地图

为了节省内存,提高效率,大多数游戏开发者会将零碎的图片合成一张图片(使用TexturePacker可以实现合图功能,shoeBox可以拆图)

1、使用cocos2d-x引擎如何获取合图中的某一张图

首先应当获取精灵帧缓冲区,将合图加载进缓冲区:

//获取精灵帧缓冲区,里面存放精灵帧
	SpriteFrameCache* pCache=SpriteFrameCache::getInstance();
	pCache->addSpriteFramesWithFile("Image/GameMenu.plist");

  精灵类可以直接调用静态方法createWithSpriteFrameName()方法创建精灵类。

//获取精灵帧缓冲区,里面存放精灵帧
	SpriteFrameCache* pCache=SpriteFrameCache::getInstance();
	pCache->addSpriteFramesWithFile("Image/GameMenu.plist");
	//从精灵帧缓冲区获取图片
	Sprite* pBGSprit = Sprite::createWithSpriteFrameName("Background.png");
	pBGSprit->setPosition(orgin.x + visibleSize.width / 2, orgin.y + visibleSize.height / 2);
	this->addChild(pBGSprit);

按钮则是先创建一个空的没有挂上图片的按钮,再调用相应的set方法挂载图片。

创建空的按钮:

m_pBtnExit = MenuItemImage::create("", "", CC_CALLBACK_1(CGameMenue::menueCallBack, this));

挂载图片:

m_pBtnExit->setNormalSpriteFrame(pCache->getSpriteFrameByName("ExitNormal.png"));
	m_pBtnExit->setSelectedSpriteFrame(pCache->getSpriteFrameByName("ExitSelected.png"));

2、从页面加载进入游戏菜单

页面加载界面应当是加载相应的内容,这里我们调用节点类(Node)下的scheduleOnce(计时器功能),在2s后进入游戏菜单界面。这段逻辑写在init()中,即初始化完成就开始计时

this->scheduleOnce(CC_CALLBACK_1(CGameLogo::schdulCallBack, this), 2.0f, "callBack");
void CGameLogo::schdulCallBack(float fNum)
{
	Director::getInstance()->replaceScene(CGameMenue::createScene());
	//Director::getInstance()->replaceScene()
}

猜你喜欢

转载自blog.csdn.net/qq_41791653/article/details/82430091
今日推荐