cocos2dx3.3开发FlappyBird总结十:背景层设计

来源:互联网 发布:网络博客 国家 编辑:程序博客网 时间:2024/05/17 02:02

游戏背景层的任务是很简单的,只是根据当前时间来显示白天或者黑夜背景图,提供获取地面的高度方法。

#ifndef __EngryBird__BackgroundLayer__#define __EngryBird__BackgroundLayer__#include "cocos2d.h"/** * The game background,showing the background information * in the game. */class BackgroundLayer : public cocos2d::Layer {public:  /**   * The default constructor   */  BackgroundLayer();  /**   * The default destructor   */  ~BackgroundLayer();  /**   * The init method, will init the super init method first   *   * @return true if succeeded, otherwise false   */  virtual bool init();  CREATE_FUNC(BackgroundLayer);  /**   * Get the land sprite height   *   * @return The height of land   */  static float getLandHeight();};#endif /* defined(__EngryBird__BackgroundLayer__) */

背景层的实现中,看看怎么判断是不是白天或者黑夜。

bool BackgroundLayer::init() {  if (!Layer::init()) {    return false;  }  // Get the current time, judge whether now is day or night  time_t t = time(NULL);  tm *localTime = localtime(&t);  int hour = localTime->tm_hour;  std::string bgName;  if (hour >= 6 && hour <= 17) {    bgName = "bg_day";  } else {    bgName = "bg_night";  }  auto bgSprite = Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrame(bgName));  // 这里设置成(0,0),就可以从左下角开始显示至全屏  bgSprite->setAnchorPoint(Vec2::ZERO);  bgSprite->setPosition(Vec2::ZERO);  this->addChild(bgSprite);  return true;}

获取地面的高度:

// 其实就是加载地面精灵,然后获取其内容大小的高度float BackgroundLayer::getLandHeight() {  auto spriteFrame = AtlasLoader::getInstance()->getSpriteFrame("land");  auto land = Sprite::createWithSpriteFrame(spriteFrame);  return land->getContentSize().height;}

下一步,说说控制层(选项层)

0 0
原创粉丝点击