首先写一个计时器的头文件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游戏开发之计时器的更多相关文章

  1. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  2. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  3. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

  4. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  5. 2、Cocos2dx 3.0游戏开发找小三之引擎简单介绍

    尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 引擎简单介绍 Cocos2d-x 的 ...

  6. HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)

    HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...

  7. MVC模式在游戏开发的应用

    原地址: http://www.cocoachina.com/gamedev/2012/1129/5212.html MVC是三个单词的缩写,分别为:模型(Model).视图(View)和控制Cont ...

  8. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  9. 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?

    如题! 首先说一说学习手机游戏(移动游戏)这件事. 眼下移动互联网行业的在以井喷状态发展.全球几十亿人都持有智能终端设备(ios android),造就了非常多移动互联网创业机会: 一.移动社交 微信 ...

随机推荐

  1. Bootstrap 图标菜单按钮组件

    ---恢复内容开始--- 一.小图标组件 Bootstrap 提供了免费的 263 个小图标(数了两次),具体可以参考中文官网的组件 链接:http://v3.bootcss.com/componen ...

  2. BLE协议栈及传统蓝牙协议栈对比图

    1. BLE协议栈的层次图如下: 主机控制接口层: 为主机和控制器之间提供标准通信接口 逻辑链路控制及自适应协议层: 为上层提供数据封装服务 安全管理层: 定义配对和密钥分配方式,为协议栈其他层与另一 ...

  3. Archiver 浅析

    归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象.通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象. 两种归档数据的方法:属性列表和带键值的编码. 属性列表局限性很 ...

  4. 12 Most Useful Google Chrome Browser chrome:// Commands

    1. chrome://flags 2. chrome://memory 3. chrome://about 4:chrome://net-internals 5:chrome://webrtc-in ...

  5. TOMCAT源码分析(启动框架)

    建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的. 所以得实践.实践.再实践. 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动 ...

  6. Unicode与UTF8相互转化(使用MultiByteToWideChar)

    1.简述 最近在发送网络请求时遇到了中文字符乱码的问题,在代码中调试字符正常,用抓包工具抓的包中文字符显示正常,就是发送到服务器就显示乱码了,那就要将客户端和服务器设置统一的编码(UTF-8),而我们 ...

  7. Java 进程(转)

    转自http://jiangshuiy.iteye.com/blog/1674235 PS:今天做android助手项目的时候,发现adb push命令执行会卡死,最后发现不能用waitfor阻塞等待 ...

  8. myscroll

    <!DOCTYPE html> <head><meta http-equiv="Content-Type" content="text/ht ...

  9. Activity的四种启动模式和onNewIntent()

    转自:http://blog.csdn.net/linghu_java/article/details/17266603 Android中Activity启动模式详解   在Android中每个界面都 ...

  10. WebApi 找到了与该请求匹配的多个操作

    在同一个命名空间内,报错 错误的路由代码: namespace CRM4S { public static class WebApiConfig { public static void Regist ...