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

  这节来实现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. redis setNx方法

    Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists.这系列的命令非常有用,这里讲使用SETNX来实现分布式锁 ...

  2. hdu 1828 Picture(线段树轮廓线)

    Picture Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  3. 复制书稿 (dp+贪心)

    [题目描述] 现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一.第三和第四本书给同一个人抄写 ...

  4. springcloud费话之断路器(hystrix in feign)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  5. JSON:结构化数据格式

    JSON是javascript的子类,也是作为更好的互联网传输结构化数据格式逐渐取代XML,因此要理解JSON,重要的是理解它是一种数据格式,不是一种编程语言. 语法 //javascript var ...

  6. rtp/rtcp

    rtp/rtcp stack custom rtp ORTP UCL Common RTP library Bell Labs RTP Library jrtplib 1.custom rtp sen ...

  7. 2018-2-13-Win10-UWP-Intro-to-controls-and-events

    title author date CreateTime categories Win10 UWP Intro to controls and events lindexi 2018-2-13 17: ...

  8. quota - 显示磁盘的使用和限额

    总览 (SYNOPSIS) quota [ -guv | q ] quota [ -uv | q ] user quota [ -gv | q ] group 描述 (DESCRIPTION) Quo ...

  9. 关于TVS、ESD、稳压二极管、压敏电阻

    一.稳压管和TVS管的工作原理 稳压二极管(又叫齐纳二极管),是一种直到临界反向击穿电压前都具有很高电阻的半导体器件,在这临界击穿点上,反向电阻降低到一个很小的数值,在这个低阻区中电流增加而电压则保持 ...

  10. [ES6]react中使用es6语法

    前言 不论是React还是React-native,facebook官方都推荐使用ES6的语法,没在项目中使用过的话,突然转换过来会遇到一些问题,如果还没有时间系统的学习下ES6那么注意一些常见的写法 ...