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开发---简介
Cocos2d 之FlyBird开发---GameUnit类的更多相关文章
- Cocos2d 之FlyBird开发---MainMenu类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. MainMenu类主要实现的是游戏主界面的布局,它相当于一个港口,有开向各处的航道,而游戏中的MainMenu则是有跳转到各个场景的一个集 ...
- Cocos2d 之FlyBird开发---GamePlay类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...
- Cocos2d 之FlyBird开发---GameScore类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个类主要实现的是,显示历次成绩中的最好成绩.当然我写的这个很简洁,还可以写的更加的丰富.下面贴上代码: GameScore.h #ifn ...
- Cocos2d 之FlyBird开发---GameData类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 现在是大数据的时代,绝大多数的游戏也都离不开游戏数据的控制,简单的就是一般记录游戏的得分情况,高端大气上档次一点的就是记录和保存各方面的游 ...
- Cocos2d 之FlyBird开发---GameAbout类
| 版权声明:本文为博主原创文章,未经博主允许不得转载.(笔者才疏学浅,如有错误,请多多指教) 一般像游戏关于的这种界面中,主要显示的是游戏的玩法等. GameAbout.h #ifndef _G ...
- Cocos2d之FlyBird开发---简介
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 开发FlyBird其实非常的简单,在游戏的核心部分,我们需要实现的只有: 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态 ...
- JAVA串口开发帮助类分享-及写在马年末
摘要: 在系统集成开发过程中,存在着各式的传输途径,其中串口经常因其安全性高获得了数据安全传输的重用,通过串口传输可以从硬件上保证数据传输的单向性,这是其它介质所不具备的物理条件.下面我就串口java ...
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
随机推荐
- JSON对象与JavaScript对象的区别
//js对象的字面量表示法: var people1={ name:'hehe', age:18 }; //json的格式是: var people1={ "name":'hehe ...
- JavaScript—创建正则对象
创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;v ...
- Trait这个类的特性
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性 用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Tra ...
- 云中沙箱学习笔记1-快速部署并使用MySQL数据库
1.1 背景知识 业务背景 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面MyS ...
- SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换
SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换 场景一:表单中的日期字符串和JavaBean的Date类型的转换 在使用SpringMVC的时候,经常会遇到表单中的 ...
- shell PATH示例
- zabbix入门之监控MySQL
zabbix入门之监控MySQL 这里使用的是zabbix官方自带的MySQL监控模板. 首先确保在被监控主机安装zabbix-agent.zabbix-sender,并且将主机加入监控节点.具体操作 ...
- Sass-减法
Sass 的减法运算和加法运算类似,我们通过一个简单的示例来做阐述: 同样的,运算时碰到不同类型的单位时,编译也会报错,如:
- Es学习第十课,ElasticSearch集群搭建
前面几课我们已经把ES的基本概念和查询了解了,大家知道ES的核心优势就是天生支持分布式,所以,这课我们专门讲讲怎么搭建实现ES的集群部署. ES分布式原理 1.es分布式概念 主分片(Primary ...
- 算法 识别有效ip地址和掩码并做统计
题目描述 请解析IP地址和对应的掩码,进行分类识别.要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类. 所有的IP地址划分为 A,B,C,D,E五类 A类地址1.0.0.0~126.2 ...