保卫萝卜~想法一直存在于想法,实战才是硬道理!有想法就去实现,眼高手低都是空谈。
#ifndef __GameSchedule__
#define __GameSchedule__
#include "cocos2d.h" USING_NS_CC;
class GameSchedule : public Ref
{
public:
static GameSchedule* getInstance();
void start();
void end();
static void pause();
static void resume();
private:
virtual void onExit();
~GameSchedule();
void globalUpdate(float time);
void init();
}; #endif
#include "GameSchedule.h"
#include "GameDelayTime.h"
#include "SceneMgr.h"
static GameSchedule* _instance = nullptr;
static bool _pause = true; GameSchedule* GameSchedule::getInstance()
{
if( !_instance )
{
_instance = new GameSchedule();
_instance->init();
}
return _instance;
} void GameSchedule::init()
{
_pause = true;
} void GameSchedule::start()
{
log("GameSchedule -----> start ");
_pause = false;
Director::getInstance()->getScheduler()->schedule(schedule_selector(GameSchedule::globalUpdate),this,,false);
} void GameSchedule::end()
{
log("GameSchedule -----> end ");
Director::getInstance()->getScheduler()->unschedule(schedule_selector(GameSchedule::globalUpdate),this);
CC_SAFE_DELETE(_instance);
} void GameSchedule::pause()
{
log("GameSchedule -----> pause ");
_pause = true;
} void GameSchedule::resume()
{
log("GameSchedule -----> resume ");
_pause = false;
} void GameSchedule::globalUpdate(float time)
{
if( _pause ) return;
GameDelayTime::getInstance()->UpdateTime(time);
SceneMgr::getInstance()->UpdateScene(time);
} void GameSchedule::onExit()
{
log("GameSchedule dispose!!!!1111");
} GameSchedule::~GameSchedule()
{
log("GameSchedule dispose!!!!222");
}
GameSchedule.cpp
#ifndef __GameDelayTime__
#define __GameDelayTime__ #include "cocos2d.h"
using namespace std;
USING_NS_CC; class DelayTimeDate
{
public:
static DelayTimeDate* create( float delayTime,std::function<void()> callback );
CC_SYNTHESIZE( float, delayTime, DelayTime );
CC_SYNTHESIZE( std::function<void()>, callback, Callback );
CC_SYNTHESIZE_READONLY( float, time, TotalTime );
bool update(float time);
private:
float _time;
void init( float delayTime,std::function<void()> callback ){
_time = ;
setDelayTime(delayTime);
setCallback(callback);
}
}; class GameDelayTime
{
public:
static GameDelayTime* getInstance();
DelayTimeDate* addDelayTimeCallBack( float delayTime,std::function<void()> callback );
void removeDelayTimeCallBack( DelayTimeDate* delayTimeDate );
void UpdateTime(float time);
private:
vector<DelayTimeDate*> _keyMap; void init(); }; #endif
#include "GameDelayTime.h" static GameDelayTime* _instance = nullptr; GameDelayTime* GameDelayTime::getInstance()
{
if(!_instance)
{
_instance = new GameDelayTime();
_instance->init();
}
return _instance;
} void GameDelayTime::init()
{
} DelayTimeDate* GameDelayTime::addDelayTimeCallBack( float delayTime,std::function<void()> callback )
{
auto delayTimeDate = DelayTimeDate::create(delayTime,callback);
_keyMap.push_back(delayTimeDate);
return delayTimeDate;
} void GameDelayTime::removeDelayTimeCallBack( DelayTimeDate* delayTimeDate )
{
int size = _keyMap.size();
while (size-->)
{
if(delayTimeDate == _keyMap.at(size) )
{
_keyMap.erase(_keyMap.begin()+size);
CC_SAFE_DELETE(delayTimeDate);
break;
}
}
} void GameDelayTime::UpdateTime(float time)
{
int size = _keyMap.size();
while (size-->)
{
auto delayTimeDate = _keyMap.at(size);
if( delayTimeDate != nullptr )
{
bool isCallBack = delayTimeDate->update(time);
if( isCallBack )
{
removeDelayTimeCallBack(delayTimeDate);
}
} }
} DelayTimeDate* DelayTimeDate::create( float delayTime,std::function<void()> callback )
{
DelayTimeDate* delayTimeDate = new DelayTimeDate();
delayTimeDate->init(delayTime,callback);
return delayTimeDate;
} bool DelayTimeDate::update(float time)
{
_time+=time;
if( _time >= getDelayTime() )
{
if( callback )
{
callback();
return true;
}
}
return false;
}
GameDelayTime.cpp
Cocos2d-x 3.2 学习笔记(十六)保卫萝卜 游戏主循环与定时器的更多相关文章
-
python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
-
(C/C++学习笔记) 十六. 预处理
十六. 预处理 ● 关键字typeof 作用: 为一个已有的数据类型起一个或多个别名(alias), 从而增加了代码的可读性. typedef known_type_name new_type_nam ...
-
JavaScript权威设计--CSS(简要学习笔记十六)
1.Document的一些特殊属性 document.lastModified document.URL document.title document.referrer document.domai ...
-
MySQL学习笔记十六:锁机制
1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...
-
python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
-
SharpGL学习笔记(十六) 多重纹理映射
多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提 ...
-
yii2源码学习笔记(十六)
Module类的最后代码 /** * Registers sub-modules in the current module. * 注册子模块到当前模块 * Each sub-module shoul ...
-
Swift学习笔记十六:协议
Protocol(协议)用于统一方法和属性的名称,而不实现不论什么功能. 协议可以被类.枚举.结构体实现.满足协议要求的类,枚举,结构体被称为协议的遵循者. 遵循者须要提供协议指定的成员,如属性,方法 ...
-
PHP学习笔记十六【方法】
<?php //给一个函数传递基本数据类型 $a=90; $b=90.8; $c=true; $d="hello world"; function test1($a,$b,$ ...
随机推荐
-
log4j.properties 详解与配置步骤
一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...
-
sqlserver08评估期已过的解决方法
打开sqlserver出现提示:评估期已过.有关如何升级的测试版软件的信息,请访问http://www.microsoft.com/sql/howtobuy 解决方法如下: 第一步:进入开始菜单--- ...
-
[摘]Hibernate查询事务必要性
背景: 添加事务与否都不影响Hibernate的查询操作. 问题: 查询操作是否有必要添加事务? 答案1: Hibernate官方手册上建议任何操作(增删改查)都需要添加事务. 答案2: robbin ...
-
WordPress插件制作教程(六): 插件函数之动作(Actions)函数
这一篇为大家说一下WordPress插件函数吧,要制作插件,了解这些函数是非常有必要的 WordPress插件函数分为“动作”(Actions)和过滤器”(Filters),WordPress 使用这 ...
-
bigdata_一篇文看懂Hadoop
本文转载:暂未找到原出处,如需署名 请联系 我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文 ...
-
超超超简单的bfs——POJ-1915
Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 26102 Accepted: 12305 De ...
-
Java点滴之类与对象
类的概述 Java是一门纯粹的面向对象(OOP)语言,面向对象程序是由多个对象所组成的,而对象的创建又必须依赖于类,那么什么又是类呢?在现实世界中,我们常常将多个具有相同或相似特征的对象分为一类,并冠 ...
-
局域网内yum源搭建
在一些环境下,服务器不能连接互联网,但是我们又偏偏需要安装一些软件,此时有点麻烦了.通过使用centos镜像文件,搭建yum本地源,局域网内所有服务器都可以连接这一本地源进行软件的下载和安装,下面具体 ...
-
如何打开.lxe文件
介绍两款播放器: 第一款:PotPlayer,这款软件快进看学习视频特特别方便. 软件的下载地址:链接:http://potplayer.daum.net/?lang=zh_CN 第二款:屏幕录像专家 ...
-
jquery.cookie.js写入的值没有定义
这个是插件的基本语法,你写的没错,错就错在你肯定是在本地测试的,cookie是基于域名来储存的.意思您要放到测试服务器上或者本地localhost服务器上才会生效.cookie具有不同域名下储存不可共 ...