您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx游戏开发——别踩白块学习笔记(一)——Block类

2014-08-13 12:22 686 查看
一、Block类介绍

当然啦,Block类在这个游戏里就是必需品= =,因为整体都是由这个搞出来的,所以我们可以把游戏需要实现的功能都放在这里。

主要有下面这些功能(经典模式):

1、创建一个Block,以及消除一个Block,还有管理Block的方法。

2、设置和取出所在的行号。

3、向下移动的功能。

二、具体实现。

1、创建一个Block,以及消除一个Block,还有管理Block的方法。

首先,管理Block的方法,就是创建一个静态的全局的数组,创建一个就加进数组,消除一个就删除出去。

(1)创建Block的方法。

  先在Block.h中声明方法:

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

virtual bool initwithArgs(Color3B color,Size size,string label,float fontSize ,Color4B textColor);


然后呢,在Block.cpp中实现:

Block* Block::createWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor)
{
auto block = new Block();
block->initwithArgs(color, size, label, fontSize, textColor);
block->autorelease();                 //加入自动回收池,由引擎来管理内存。

_blocks->pushBack(block);      //加入数组

return block;
}


bool Block::initwithArgs(Color3B color,Size size,string label,float fontSize,Color4B textColor)
{
this->Sprite::init();            //一个Block就是一个精灵

this->setContentSize(size);

this->setAnchorPoint(Point::ZERO);

this->setTextureRect(Rect(0, 0, size.width, size.height));     //设置纹理的大小

this->setColor(color);

auto myLabel = Label::create();            //创建label,主要是开始和结束的Block需要。
myLabel->setString(label);
myLabel->setSystemFontSize(fontSize);
myLabel->setTextColor(textColor);
this->addChild(myLabel);
myLabel->setPosition(size.width/2, size.height/2);

return true;
}


(2)删除一个Block

void Block::removeBlock()
{
this->removeFromParent();        //从Layer中移除
_blocks->eraseObject(this);      //从数组中移除。
}


2、设置和读取行号。

CC_SYNTHESIZE(int, _BlockCol, BlockCol);

这是引擎为我们封装好的功能,就是用于快速设置接口,功能当然就很简单,就是创建设置和读取_BlockCol的函数。

3、向下移动的功能。

void Block::moveDown()
{
this->_BlockCol--;     //记录的行号减一
auto visibleSize = Director::getInstance()->getVisibleSize();
this->runAction(Sequence::create(MoveTo::create(0.1f, Vec2(getPositionX(), _BlockCol*visibleSize.height/4)),
CallFunc::create([this]()
{
if(_BlockCol<0)
this->removeBlock();    //移除屏幕时删除Block
}), NULL));
}


Block类的简单简历就到此啦~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐