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

  这节来实现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开发---简介

Cocos2d 之FlyBird开发---GameUnit类的更多相关文章

  1. Cocos2d 之FlyBird开发---MainMenu类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. MainMenu类主要实现的是游戏主界面的布局,它相当于一个港口,有开向各处的航道,而游戏中的MainMenu则是有跳转到各个场景的一个集 ...

  2. Cocos2d 之FlyBird开发---GamePlay类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...

  3. Cocos2d 之FlyBird开发---GameScore类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这个类主要实现的是,显示历次成绩中的最好成绩.当然我写的这个很简洁,还可以写的更加的丰富.下面贴上代码: GameScore.h #ifn ...

  4. Cocos2d 之FlyBird开发---GameData类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 现在是大数据的时代,绝大多数的游戏也都离不开游戏数据的控制,简单的就是一般记录游戏的得分情况,高端大气上档次一点的就是记录和保存各方面的游 ...

  5. Cocos2d 之FlyBird开发---GameAbout类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载.(笔者才疏学浅,如有错误,请多多指教) 一般像游戏关于的这种界面中,主要显示的是游戏的玩法等. GameAbout.h #ifndef _G ...

  6. Cocos2d之FlyBird开发---简介

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 开发FlyBird其实非常的简单,在游戏的核心部分,我们需要实现的只有: 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态 ...

  7. JAVA串口开发帮助类分享-及写在马年末

    摘要: 在系统集成开发过程中,存在着各式的传输途径,其中串口经常因其安全性高获得了数据安全传输的重用,通过串口传输可以从硬件上保证数据传输的单向性,这是其它介质所不具备的物理条件.下面我就串口java ...

  8. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  9. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

随机推荐

  1. hdu 6301 Distinct Values (思维+set)

    hdu 6301 Distinct Values 题目传送门 题意: 给你m个区间,让你求出一个长度为n的区间且满足在这些区间的数不重复, 并且要求字典序最小 思路: 如果我们已经求出这个序列了,你会 ...

  2. python学习第十九天三元运算符与php语言区别

    三元运算符是条件语句的简写,常见的条件语句写三行,三元运算符只需要写一行,python三元运算符是怎么写的呢 1,常见条件判断 if a<b: print(a) else: print(b) 2 ...

  3. metasploit下Windows的多种提权方法

    metasploit下Windows的多种提权方法 前言 当你在爱害者的机器上执行一些操作时,发现有一些操作被拒绝执行,为了获得受害机器的完全权限,你需要绕过限制,获取本来没有的一些权限,这些权限可以 ...

  4. springboot的jar包部署

    由于springboot常用war包部署,改为cloud开发模式多端口情况下,部署反而不习惯 毕竟,war包要不要项目名访问都必须放在tomcat的root目录下 而此目录限制只能放置一个项目,并且登 ...

  5. Redis线上环境做Keys匹配操作!你可以离职了!

    转自:https://blog.csdn.net/bntx2jsqfehy7/article/details/84207884一.一个新闻 新闻内容如下:php工程师执行redis keys * 导致 ...

  6. Linux学习笔记之磁盘与文件系统的管理

    三.Linux磁盘与文件系统的管理 MBR扇区(512B) 磁盘的分区组成 Boot sector    扇区(用来装引导程序) Super block   记录inode与Block的信息 Inod ...

  7. HDU 5634 线段树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5634 题意:给定一个长度为n的序列,有m次操作.操作有3种: 1 l,r :区间[l,r]的值变成ph ...

  8. java api 调用es集群(1.7版本)

    public static void main(String[] args) { Settings settings = ImmutableSettings.settingsBuilder() // ...

  9. mac文本操作小技巧——2019年10月17日

    声明:看的别人博主写的,自己整理的,非原创,只是自用. mac文本操作技巧 官方指导文档:https://support.apple.com/zh-cn/HT201236 1.光标移动 1.1 行首. ...

  10. 分布式消息中间件及RabbitMQ

    分布式应用和集群: 从部署形态来看,它们都是多台机器或者多个进程部署,而且都是为了实现一个业务功能. 如果是一个业务被拆分成多个子业务部署在不同的服务器上,那就是分布式应用 如果是同一个业务部署在多台 ...