一、Block类介绍

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

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

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

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

3、向下移动的功能。

二、具体实现。

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

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

(1)创建Block的方法。

  先在Block.h中声明方法:

  1. static Block* createWithArgs(Color3B color,Size size,string label,float fontSize ,Color4B textColor);
  2.  
  3. virtual bool initwithArgs(Color3B color,Size size,string label,float fontSize ,Color4B textColor);

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

  1. Block* Block::createWithArgs(Color3B color, Size size, std::string label, float fontSize, Color4B textColor)
  2. {
  3. auto block = new Block();
  4. block->initwithArgs(color, size, label, fontSize, textColor);
  5. block->autorelease(); //加入自动回收池,由引擎来管理内存。
  6.  
  7. _blocks->pushBack(block); //加入数组
  8.  
  9. return block;
  10. }
  1. bool Block::initwithArgs(Color3B color,Size size,string label,float fontSize,Color4B textColor)
  2. {
  3. this->Sprite::init(); //一个Block就是一个精灵
  4.  
  5. this->setContentSize(size);
  6.  
  7. this->setAnchorPoint(Point::ZERO);
  8.  
  9. this->setTextureRect(Rect(, , size.width, size.height)); //设置纹理的大小
  10.  
  11. this->setColor(color);
  12.  
  13. auto myLabel = Label::create(); //创建label,主要是开始和结束的Block需要。
  14. myLabel->setString(label);
  15. myLabel->setSystemFontSize(fontSize);
  16. myLabel->setTextColor(textColor);
  17. this->addChild(myLabel);
  18. myLabel->setPosition(size.width/, size.height/);
  19.  
  20. return true;
  21. }

(2)删除一个Block

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

2、设置和读取行号。

CC_SYNTHESIZE(int, _BlockCol, BlockCol);

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

3、向下移动的功能。

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

Block类的简单简历就到此啦~

cocos2dx游戏开发——别踩白块学习笔记(一)——Block类的更多相关文章

  1. cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现

    一.创建GameScene以及GameLayer 就是简单创建一个Scene而已,在此就不多说啦~,可以参照我的打飞机的学习笔记(2). 二.添加一个开始栏 很简单,就是调用Block中的create ...

  2. 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴

    上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...

  3. 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

    <Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...

  4. cocos2dx游戏开发——捕鱼达人mini版学习笔记(二)——MainMenu的搭建

    一.创建文件~ MainMenuScene.h   MainMenuScene.cpp   MainMenuLayer.h   MainMenuLayer.cpp 那个场景的搭建就不多说了,那个我的打 ...

  5. 《Cocos2d-x游戏开发实战精解》学习笔记1--在Cocos2d中显示图像

    Cocos2d-x中的图像是通过精灵类来显示的.在Cocos2d-x中游戏中的每一个角色.怪物.道具都可以理解成是一个精灵,游戏背景作为一种特殊的单位将其理解成是一个精灵也没有什么不妥.在源文件本章目 ...

  6. 《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字

    在Cocos2d-x中要显示文字就需要用到Label控件.在3.x版本的Cocos2d中,舍弃了之前版本所使用的LabelTTF.LabelAtlas.LabelBMFont 3个用于显示文字的类,而 ...

  7. cocos2dx游戏开发——捕鱼达人mini版学习笔记(一)——FishAchor的搭建

    一.创建文件· FishAchor.h还有FishAchor.cpp. 主要就是创建每种鱼的类,方便以后的取用~,很多是重复性的操作,然后我们是mini版,暂时也就加入大概6钟鱼就好= =,然后我们现 ...

  8. ios-高仿别踩白块游戏的实现

    先看下效果图片 前几天看到一个游戏叫别踩白块,下载量还挺大几百万了都,下载下来玩了玩看了看,这个游戏还挺简单的.俗话说想一千遍,一万遍不如动手做一遍来的实在.昨晚以及今天白天闲的没事就开搞了,下午六点 ...

  9. jquery之别踩白块游戏的实现

    转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5687112.html 前端学习要告一段落了,也没机会写什么像样的东西,然后无意中想起某人以前给我玩了一下别踩白块的游 ...

随机推荐

  1. Windows下安装Maven

    上篇文章刚说到Linux下安装maven的过程,有时候为了适合在本地构建项目开发,然后上传到远程服务器执行,需要在本地构建maven项目,那么一般就是在Windows下构建maven项目并导入到我们的 ...

  2. Effective C++ -----条款29:为“异常安全”而努力是值得的

    异常安全函数(Exception-safe functions)即使发生异常也不会泄露资源或允许任何数据结构败坏.这样的函数区分为三种可能的保证:基本型.强烈型.不抛异常型. “强烈保证”往往能够以c ...

  3. Greedy:Jessica's Reading Problem(POJ 3320)

    Jessica's Reading Problem 题目大意:Jessica期末考试临时抱佛脚想读一本书把知识点掌握,但是知识点很多,而且很多都是重复的,她想读最少的连续的页数把知识点全部掌握(知识点 ...

  4. event.srcElement 用法笔记e.target

    event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称. 注意获取的标记都以大写表示,如"TD",&q ...

  5. Xcode添加注释

    VVDocumenter-Xcode,自动生成注释,感觉比较方便的插件,分享下,应该很多人都知道= = 在 https://github.com/onevcat/VVDocumenter-Xcode  ...

  6. iOS注册collcetionViewFlowLayout

    self.arr = [[NSMutableArray alloc] init]; for (int i = 0; i < 9; i++) { [self.arr addObject:[UIIm ...

  7. [Android Pro] 通过包名启动应用

    Intent intent = packageManager.getLaunchIntentForPackage(WEIXIN_PKGNAME); intent.setFlags(Intent.FLA ...

  8. Mysql之取消主从复制

    Mysql5.7 Mysql取消主从复制很简单.只需在其要终止同步的Server上[一般是Slave]执行下面语句即可: stop slave; reset slave; 如图: .

  9. java 资源监控

    http://blog.csdn.net/huangzhaoyang2009/article/details/11860757 http://blog.csdn.net/cuker919/articl ...

  10. auto(c++11)

    C++primer 第五版,第三章出现了此段程序,求解读附源码:代码1:#include<iostream>#include<string>using namespace st ...