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

  这节来实现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. windows下安装oracle11g

    第一步:一定要先做这一步. Oracle11g 安装过程出现提示:未找到文件 D:\app\Administrator\product\11.2.0\dbhome_2\owb\external\oc4 ...

  2. azkaban简单使用

    步骤 1.通过web服务器创建项目,项目名称和描述都是必须填的2.上传zip包 job定义 1.简单的job一个job就是一个properties文件,只不过文件是以.job结尾,文件里面定义了job ...

  3. VS code 生成html模板快捷键

    第一步:在空html文档中输入   ! 第二步:按下tab键.

  4. centos7安装rabbitmq简单方式

    1,安装rabbitmq前要准备的基础环境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make ...

  5. JavaScript面向对象编程(1)-- 基础

    自从有了Ajax这个概念,JavaScript作为Ajax的利器,其作用一路飙升.JavaScript最基本的使用,以及语法.浏览器对象等等东东在这里就不累赘了.把主要篇幅放在如何实现JavaScri ...

  6. 2018-10-11-WPF-拖动滚动

    title author date CreateTime categories WPF 拖动滚动 lindexi 2018-10-11 14:10:41 +0800 2018-2-13 17:23:3 ...

  7. 《深入学习Redis(1):Redis内存模型 》笔记,待完善

    参考资料 https://www.cnblogs.com/kismetv/p/8654978.html 一.内存统计 info memory 查看内存统计 五.应用举例

  8. ThreadPoolTaskExecutor使用详解

    当我们需要实现并发.异步等操作时,通常都会使用到ThreadPoolTaskExecutor,现对其使用稍作总结. 配置ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Ex ...

  9. zookeeper,通过python连接找出其对应的hive

    #通过zookpeer找到对应的hive from kazoo.client import KazooClient zkClient = KazooClient(hosts="ip1:218 ...

  10. Linux网络栈

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11394930.html OSI模型 OSI 模型把网络互联的框架分为应用层.表示层.会话层.传输层.网 ...