cocos2dx定时器scheduleUpdate研究

直接发源代码

#include <iostream>
#include <windows.h>
using namespace std;

class Ref
{
protected:
	Ref(){isLoop = false;}
	virtual void update(){cout<< "super loop" << endl;}
	bool isLoop;
public:
	void unScheduleUpdate(){isLoop = false;}
	void ScheduleUpdate(){isLoop = true;}
	void mainLoop(){if (isLoop)this->update();}
};

class myClass :public Ref
{
public:
	virtual void update(){cout << "this loop" << endl;}
};

int main(int argc, char* argv[])
{
	Ref*ref = new myClass;
	ref->ScheduleUpdate();
	for (;;)
	{
		cout << "loop" << endl;
		Sleep(500);
		ref->mainLoop();
		ref->unScheduleUpdate();
	}
	return(0);
}

其结果和cocos scheduleUpdate定时器 功能一致,

这个问题困扰了很久,原因是c++基础更不扎实,该功能是典型的虚函数应用

时间: 2024-08-13 19:59:36

cocos2dx定时器scheduleUpdate研究的相关文章

cocos2dx定时器事件

利用场景.层和精灵等游戏元素,我们可以构建游戏的框架,但是此时的游戏仍然是静止不动的.在一切游戏中,游戏的 状态都会随着时间的流逝而改变,同时我们还需要定时进行一些逻辑判断,例如鱼和子弹的碰撞检测.为了解决以上问题, 我们引入了定时器的概念.定时器是以一定时间间隔连续引发游戏事件的工具.很显然,定时器就是使游戏动态变化所需 的工具.Cocos2d-x 为我们提供了两种方式实现定时机制--使用 update 方法以及使用 schedule 方法,下面简要介绍这两种 方式. update定时器 第一

cocos2dx定时器

cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce 首先,什么是定时器呢?或许你有时候会想让某个函数不断的去执行,或许只是执行一次,获取你想让他每隔几秒执行一次 cocos2dx中有三种定时器: scheduleUpdate,schedule,scheduleOnce. 1.scheduleUpdate 加入当前节点后,程序会每帧都会自动执行一次默认的Update函数.(注:一定是Update函数哦,若想调用其他自己命名的函数则使用s

cocos2dx 3.0研究(1)-- hello world程序

1. 在mac上构建hello world很easy ./setup.py source /Users/jiangxf/.bash_profile cocos new AliGame -p com.mxhd.aligame -l cpp -d ali_game 输出 Runing command: new > Copy template into /Users/jiangxf/dev/cocos2d-x-3.0/ali_game/AliGame > Copying cocos2d-x file

stm32之定时器彻底研究

分类: C/C++ 这里介绍两种方式使用stm32的定时器:直接操作寄存器和使用st的官方的库文件. 相比较而言,直接操作定时器比较简洁,对着寄存器看十分明了.而使用库文件有一点晕头转向. (个人观点) 程序如下:(以下程序在DX32的例程修改而来,使用的是比较古老的3.0固件库) 1.timer.c文件 #include "STM32Lib\\stm32f10x.h"void TIM2_Configuration(void){ TIM_TimeBaseInitTypeDef  TIM

cocos2d-x学习过程中的疑问

1.一个Scene中不同的层或者有几层Layer是在什么时候设置的? 2.helloWord中init()函数是有谁来调用的? 答:HelloWorld的init函数是在create函数调用后才会调用的函数,等init函数运行完,才会去Scene中加入已经初始化完毕的Layer,即此时才会运行scene->addChild(layer); 3.为什么有时候加入一个成员.须要在给类型名加cocos2d才干成功?如给HelloWorld加入一个成员Sprite,直接在头文件里使用语句"Spri

cocod2d-x 之 CCDirector、CCScene、CCSprite

CCDirector是控制游戏流程的主要组件. 1 typedef enum { 2 /// sets a 2D projection (orthogonal projection)2D投机模式 3 kCCDirectorProjection2D, 4 5 /// sets a 3D projection with a fovy=60, znear=0.5f and zfar=1500.3D投影 6 kCCDirectorProjection3D, 7 8 /// it calls "updat

手机管理应用研究【3】—— 手机加速篇

欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 说明 在上一篇中介绍了“垃圾清理”,在系统优化中有一个功能往往是与垃圾清理分不开的,那就是“手机加速”.目前流行的管理软件中以及网络上并没有明确的定义什么叫“垃圾清理”什么叫“手机加速”.结合上一篇的“垃圾清理”这里统一做一个在本系列文章中的定义: n 垃圾清理:在本系列文章中认为扫描和清理的是静态内容,包括应用的文件缓存.缩略图.日志等系统或应用创建的文件,这些文件不具有“运行时”特征. n 手机加速:在本系列文

4.帧循环(游戏循环),schedule

 1 概述 游戏乃至图形界面的本质是不断地画图,然而画图并非任意的,不论什么游戏都须要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑.游戏逻辑会控制游戏内容,使其依据用户输入和时间流逝而改变.因此.游戏能够抽象为不断地反复. 2 下面动作: A 处理用户输入 B 处理定时事件 C 画图 游戏主循环就是这种一个循环,它会重复运行以上动作,保持游戏进行下去.直到玩家退出游戏. CCDirector::mainLoop()方法,这种方法负责调动定时器,画图,发送全局通知,并处理内存回收池.该方

3Animation动画的创建,CCSpeed,CCFollow

 动画,不同于动作,动画并非属性的改变.而是对帧的播放. 2 方法一 CCSprite * sp = CCSprite::create("animation/p_2_01.png"); sp->setPosition(ccp(240,160)); //注意:这里的CCRectMake中的参数都是相对自己来说的,前两个参数定义了一个点,80,80表示的是矩形的长,宽. CCSpriteFrame * frame1 = CCSpriteFrame::create("an