Cocos2d 之FlyBird开发---GameUnit类

|   版权声明:本文为博主原创文章,未经博主允许不得转载。

  这节来实现GameUnit类中的一些函数方法,其实这个类一般是一个边写边完善的过程,因为一般很难一次性想全所有的能够供多个类共用的方法。下面贴上代码:

GameUnit.h

#ifndef _GAME_UNIT_H_
#define _GAME_UNIT_H_
 
//////////////////////////////////////////////////////////////////
//此文件中主要描述的是游戏经常使用到的一些变量和函数的集合
#include "cocos2d.h"
USING_NS_CC;
 
class unit : public cocos2d::Layer
{
private:
     cocos2d::Size visible;
     cocos2d::Vec2 origin;
     cocos2d::Animation* animation;
 
public:
     void displayNowScore(float);
     cocos2d::Size winSize();
     cocos2d::Vec2 winOrigin();
     cocos2d::Animation* gameAnimate(int);
     float scaleX(cocos2d::Sprite*, cocos2d::Size);
     float scaleY(cocos2d::Sprite*, cocos2d::Size);
     void goNullptr(cocos2d::Ref* pSender);
     //cocos2d::Sprite* createSprite(int);
};
 
#endif // _GAME_UNIT_H_

GameUnit.cpp

#include "GameUnit.h"
 
//取得当前屏幕的大小
cocos2d::Size unit::winSize()
{
     visible = cocos2d::Director::getInstance()->getVisibleSize();
     return visible;
}
 
//取得当前的屏幕的原点坐标
cocos2d::Vec2 unit::winOrigin()
{
     origin = cocos2d::Director::getInstance()->getVisibleOrigin();
     return origin;
}
 
//计算适合屏幕的缩放值
float unit::scaleX(cocos2d::Sprite* sprite, cocos2d::Size visible)
{
     return visible.width / sprite->getContentSize().width;
}
 
float unit::scaleY(cocos2d::Sprite* sprite, cocos2d::Size visible)
{
     return visible.height / sprite->getContentSize().height;
}
 
//合成游戏中的精灵的动画效果
cocos2d::Animation* unit::gameAnimate(int types)
{
     int i = 0;
     if (types <= 3 && types >= 1)
              //通过 .plist 文件来创建,取得动画创建的对象
              SpriteFrameCache::getInstance()->addSpriteFramesWithFile("bird/bird.plist");
     else
              SpriteFrameCache::getInstance()->addSpriteFramesWithFile("bird/number.plist");
 
     //使用一个Vector容器来保存这些对象.
     Vector<SpriteFrame*> frames;
 
     //将plist中的文件依次的去处来
     switch (types)
     {
     case 1:
              //红色小鸟
              for (i = 0; i < 3; i++)
              {
                      //循环取出每只小鸟
                      String* frameName = String::createWithFormat("bird0_%d.png", i);
                      //取得每只小鸟对应的名字
                      SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName->getCString());
                      //将每只小鸟压入栈中
                      frames.pushBack(frame);
              }
              animation = Animation::createWithSpriteFrames(frames, 1.0f / 3.0f);
              break;
              
     case 2:
              //蓝色小鸟
              for (i = 0; i < 3; i++)
              {
                      String* frameName = String::createWithFormat("bird1_%d.png", i);
                      SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName->getCString());
                      frames.pushBack(frame);
              }
              animation = Animation::createWithSpriteFrames(frames, 1.0f / 3.0f);
              break;
 
     case 3:
              //黄色小鸟
              for (i = 0; i < 3; i++)
              {
                      String* frameName = String::createWithFormat("bird2_%d.png", i);
                      SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName->getCString());
                      frames.pushBack(frame);
              }
              animation = Animation::createWithSpriteFrames(frames, 1.0f / 3.0f);
              break;
 
     case 4:
              //黄色小鸟
              for (i = 1; i <= 3; i++)
              {
                      String* frameName = String::createWithFormat("n%d.png", i);
                      SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName->getCString());
                      frames.pushBack(frame);
              }
              animation = Animation::createWithSpriteFrames(frames, 1.0f / 1.0f);
              break;
 
     default:
              CCLOG("Error, The create animation occur error!");
              break;
     }
 
     return animation;
}
 
cocos2d::Sprite* createSprite(int type)
{
     Sprite* sprite4 = Sprite::create("logo/medals1.png");
     Sprite* sprite3 = Sprite::create("logo/medals2.png");
     Sprite* sprite2 = Sprite::create("logo/medals3.png");
     Sprite* sprite1 = Sprite::create("logo/medals4.png");
     switch (type)
     {
              //award = NULL;
              //铜牌
     case 5:CCLOG("5");
              return sprite1;
              break;
              //白银
     case 10: CCLOG("10");
              return sprite2;
              break;
              //黄金
     case 20:CCLOG("20");
              return sprite3;
              break;
              //白金
     case 50:CCLOG("50");
              return sprite4;
              break;
     }
     return nullptr;
}
 
void displayNowScore(float time)
{
     /*
     int number = 0;
     int i = 0;
 
     //分离数字
     while (number)
     {
              switch (number%10)
              {
              case 0:
                      MenuItemImage* zero = NULL;
                      zero = MenuItemImage::create(
                               "number/zero.png",
                               "number/zero.png",
                               CC_CALLBACK_1(unit::goNullptr, this)
                               );
                      break;
              case 1:
                      MenuItemImage* one = NULL;
                      one = MenuItemImage::create(
                               "number/one.png",
                               "number/one.png",
                               CC_CALLBACK_1(unit::goNullptr, this)
                               );
                      break;
              case 2:
                      MenuItemImage* two = NULL;
                      two = MenuItemImage::create(
                               "number/two.png",
                               "number/two.png",
                               CC_CALLBACK_1(unit::goNullptr)
                               );
                      break;
              case 3:
                      Sprite* three = NULL;
                      three = Sprite::create("number/three.png");
                      break;
              case 4:
                      Sprite* frou = NULL;
                      frou = Sprite::create("number/frou.png");
                      break;
              case 5:
                      Sprite* five = NULL;
                      five = Sprite::create("number/five.png");
                      break;
              case 6:
                      Sprite* six = NULL;
                      six = Sprite::create("number/six.png");
                      break;
              case 7:
                      Sprite* seven = NULL;
                      seven = Sprite::create("number/seven.png");
                      break;
              case 8:
                      Sprite* eight = NULL;
                      eight = Sprite::create("number/eight.png");
                      break;
              case 9:
                      Sprite* nine = NULL;
                      nine = Sprite::create("number/nine.png");
                      break;
              }
              number = number / 10;
     }
     */
}
 
void unit::goNullptr(cocos2d::Ref* pSender) {}

  

每个函数的功能见:Cocos2d之FlyBird开发---简介

原文地址:https://www.cnblogs.com/geore/p/5800033.html