Cocos2d-x游戏开发之计时器
首先写一个计时器的头文件GameTimer.h:
#ifndef _GAME_TIMER_H_ #define _GAME_TIMER_H_
#include "cocos2d.h"
class GameTimer : public cocos2d::Node { public: GameTimer();
virtual ~GameTimer();
static GameTimer* createTimer(float time);
void update(float delta);
bool init(float time);
void stop();
float getTime();
private: cocos2d::LabelTTF* label; float pTime; };
#endif
GameTimer.cpp如下:
#include "GameTimer.h"
USING_NS_CC;
GameTimer::GameTimer() {
}
GameTimer::~GameTimer() {
}
bool GameTimer::init(float time) {
pTime = time;
label = LabelTTF::create();
label->setPosition(ccp(130, 610));
this->addChild(label);
schedule(schedule_selector(GameTimer::update));
return true; }
void GameTimer::stop() {
this->unschedule(schedule_selector(GameTimer::update));
}
float GameTimer::getTime() {
return pTime;
}
void GameTimer::update(float delta) {
pTime -= delta;
char* mtime = new char[10];
//此处只是显示分钟数和秒数 自己可以定义输出时间格式
sprintf(mtime, "%02d : %02d", (int)pTime / 60, (int)pTime % 60);
label->setString(mtime);
label->setFontSize(30);
label->setColor(Color3B(0, 0, 0));
}
GameTimer* GameTimer::createTimer(float time) {
GameTimer* gametimer = new GameTimer;
if (gametimer && gametimer->init(time)) {
gametimer->autorelease(); return gametimer;
}
else {
delete gametimer; gametimer = NULL;
}
return NULL;
}
在MyGame.h中声明:
头文件#include "GameTimer.h"
函数void Updatetime(float t);//该函数用于让计时器停止计时
MyGame.cpp:
#include "MyGame.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#include "cocos2d.h"
#include "GameTimer.h"
#include<iostream>
#include<stdio.h>
using namespace std;
USING_NS_CC;
using namespace cocos2d;
using namespace cocostudio::timeline;
Scene* MyGame::createScene() {
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = MyGame::create();
// add layer as a child to scene scene->addChild(layer);
// return the scene return scene;
}
bool MyGame::init()
{
//////////////////////////////
// 1. super init first
if (!Layer::init())
{
return false;
}
//创建计时器
m_timeCounter = GameTimer::createTimer(61); this->addChild(m_timeCounter);
//开始计时
m_timeCounter->init(61);
this->schedule(schedule_selector(MyGame::Updatetime));
// 创建背景图片
auto dirt = Sprite::create("scene.png");
dirt->setScaleX(0.75);
dirt->setScaleY(0.803);
dirt->setAnchorPoint(Vec2::ZERO);
dirt->setPosition(0, 0);
this->addChild(dirt, -2);
.....................
return true;
}
//Updatetime函数
void MyGame::Updatetime(float t)//超过60秒,让时间暂停
{
if (m_timeCounter->getTime() <= 0) m_timeCounter->stop();
}
运行结果如下:
Cocos2d-x游戏开发之计时器的更多相关文章
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- (转载)如何学好iphone游戏开发
转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
- 【Cocos2D研究院之游戏开发】
http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Co ...
- 2、Cocos2dx 3.0游戏开发找小三之引擎简单介绍
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 引擎简单介绍 Cocos2d-x 的 ...
- HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)
HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...
- MVC模式在游戏开发的应用
原地址: http://www.cocoachina.com/gamedev/2012/1129/5212.html MVC是三个单词的缩写,分别为:模型(Model).视图(View)和控制Cont ...
- 从一点儿不会开始——Unity3D游戏开发学习(一)
一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
如题! 首先说一说学习手机游戏(移动游戏)这件事. 眼下移动互联网行业的在以井喷状态发展.全球几十亿人都持有智能终端设备(ios android),造就了非常多移动互联网创业机会: 一.移动社交 微信 ...
随机推荐
- IOS 入门开发教程
object-c: http://mobile.51cto.com/iphone-261129.htm Objective-C入门教材 Objective-C入门教材 2011-05-11 15:58 ...
- WGZX:javaScript 学习心得--2
转贴javascript心得(二) 标签: javascriptajaxweb开发htmlfirefox框架 2008-09-11 10:56 636人阅读 评论(0) 收藏 举报 分类: UI(2 ...
- Java高级之类结构的认识
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Java体系包括,各种版本的虚拟机,可执行文件,各种第三方类库,Java API类库,Java语言 ...
- Object的属性property详细解释(自动生成成员变量)
类Class中的属性property: 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interfac ...
- HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比
HttpClient: HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版 ...
- OrderSessionHelper查看订单在session是否存在的辅助类
1. package com.biotool.web.controller.helper; import org.apache.commons.lang3.StringUtils; import ja ...
- synchronized原理
http://www.cnblogs.com/YDDMAX/p/5658607.html http://www.cnblogs.com/YDDMAX/p/5658668.html synzhroniz ...
- 玩转HTML5移动页面
(1) 动画雪碧图涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)!网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和Gul ...
- 开发者必知的8款App快速开发工具
开发者必知的8款App快速开发工具 “我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.” “APP版本迭代更新,都是企业的一道难关,没有一个一劳 ...
- PHP如何解决网站大流量与高并发的问题
首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...