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快速开发工具类总结的相关 ...
随机推荐
- python学习二十四天函数参数之默认参数
函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...
- 用Fusion Log诊断同一版本冲突问题解决
处理方法,修改注册表 Add the following values to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion Add: DWORD Force ...
- YARN的伪分布式安装
前提:安装完HDFS以后 1.修改mapred-site.xml 这个文件初始时是没有的,有的是模板文件,mapred-site.xml.template 所以需要拷贝一份,并重命名为mapred-s ...
- 阿里云服务器安装mongodb
1.下载mongodb curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz 2.解压 tar zxvf mo ...
- FTP客户端遇到150连接超时错误的处理办法
环境:阿里云ECS,win server 2012 R2 / FTP Server(FileZilla 0.9.41) 问题描述:账号连接正常,但无法列出目录,提示150连接超时. 解决过程: 1.关 ...
- Oracle 存储过程--01
1.简单的例子 /* 1.求圆的面积 */ create or replace procedure proc_1 is pi constant number(9,7):=3.1415927; radi ...
- java 静态内存图、静态代码块
package java08; /* 静态代码块格式: public class 类名称{ static{ //静态代码块 } } 特点:当第一次执行本类时,静态代码块执行唯一的一次 * */ pub ...
- [CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter 解决
错误:/usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 解决:是因为64位系 ...
- Jenkins ant打包部署
选择项目 自由风格
- Hibernate入门核心配置文件和orm元数据配置文件详解
框架是什么? 框架是用来提高开发效率的 封装了一些功能,我们需要使用这些功能时,调用即可,不用手动实现 所以框架可以理解为一个半成品的项目,只要懂得如何使用这些功能即可 Hibernate是完全面向对 ...