【cocos2d-x制作别踩白块儿】第二期:制作Block类

因为游戏中要用到很多方块,所以我们单独创建一个方块类Block。


在Blcok.h中声明两个初始化函数:

	static Block* createWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor);

	//初始化参数:方块颜色、方块大小、字、字体大小、字体颜色
	virtual bool initWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor);

因为方块有涉及到颜色、大小、字、字体大小、字体颜色,所以我们把这些都写进了参数里面。


用Vector来存放block,便于管理

	//用来存放block
	static Vector<Block*> * blocks;

在cpp中文件来具体实现这两个函数以及blocks:

//初始化blocks
Vector<Block*> * Block::blocks = new Vector<Block*>();

Block* Block::createWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor)
{
	auto b = new Block();
	b->initWithArgs(color, size, label, fontSize, textColor);
	b->autorelease();

	//将b添加到blocks中
	blocks->pushBack(b);

	return b;
}

//初始化参数:方块颜色、方块大小、字、字体大小、字体颜色
bool Block::initWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor)
{
	Sprite::init();

    //设置大小
	setContentSize(size);
	//设置锚点为左下角
	setAnchorPoint(Point::ZERO);
	//设置区域
	setTextureRect(Rect(0, 0, size.width, size.height));
	//设置颜色
	setColor(color);

	//设置文字
	auto myLabel = Label::create();
	myLabel->setString(label);
	myLabel->setSystemFontSize(fontSize);
	myLabel->setTextColor(textColor);
	addChild(myLabel);
	myLabel->setPosition(size.width/2, size.height/2);

	return true;
}

另外还需一个函数来移除Vector中的block

//从Vector中移除blocks
void Block::removeBlock()
{
	removeFromParent();
	blocks->eraseObject(this);
}




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值