cocos2d-x游戏循环和日程安排
每场比赛有一个程序执行周期继续。这是导演对象来管理非常维修。在运动假设需要的场景精神,我们可以使用计时器在游戏圈(Scheduler)精灵和其他对象进行调度。
由于Node类封装了Scheduler类,所以我们也能够直接使用Node中调用函数。
Node中调用函数主要有:
void scheduleUpdate ( void )。每个Node对象仅仅要调用该函数,那么这个Node对象就会定时地每帧回调用一次自己的update(float dt)函数。
void schedule ( SEL_SCHEDULE selector, float interval )。与scheduleUpdate函数功能一样。不同的是我们能够指定回调函数(通过selector指定)。也能够更加须要指定回调时间间隔。
void unscheduleUpdate ( void )。停止update(float dt)函数调度。
void unschedule ( SEL_SCHEDULE selector )。能够指定详细函数停止调度。
void unscheduleAllSelectors ( void )。
能够停止调度。
为了进一步了解游戏循环与调度的使用,我们改动HelloWorld实例。
改动HelloWorldScene.h代码。加入update(float dt)声明,代码例如以下:
class HelloWorld : public cocos2d::Layer
{
public:
... ... virtual void update(float dt); CREATE_FUNC(HelloWorld); };
改动HelloWorldScene.cpp代码例如以下:
bool HelloWorld::init()
{
... ... auto label = LabelTTF::create("Hello World","Arial", 24);
label->setTag(123); ①
... ... //更新函数
this->scheduleUpdate(); ②
//this->schedule(schedule_selector(HelloWorld::update),1.0f/60); ③ return true;
} voidHelloWorld::update(float dt) ④
{
auto label =this->getChildByTag(123); ⑤
label->setPosition(label->getPosition()+ Point(2,-2)); ⑥
} void HelloWorld::menuCloseCallback(Ref*pSender)
{
//停止更新
unscheduleUpdate(); ⑦
Director::getInstance()->end(); #if (CC_TARGET_PLATFORM ==CC_PLATFORM_IOS)
exit(0);
#endif
}
为了能够在init函数之外訪问标签对象label,我们须要为标签对象设置Tag属性,当中的第①行代码就是设置Tag属性为123。
第⑤行代码是通过Tag属性获得又一次获得这个标签对象。
为了能够開始调度还须要在init函数中调用scheduleUpdate(见第②行代码)或schedule(见第③行代码)。
代码第④行的HelloWorld::update(floatdt)函数是在调度函数,精灵等对象的变化逻辑都是在这个函数中编写的。我们这个样例非常easy仅仅是让标签对象动起来,第⑥行代码就是改变它的位置。
为了省电等目的,假设不再使用调度。一定不要忘记停止调度。
第⑦行代码unscheduleUpdate()就是停止调度update。假设是其它的调度函数能够採用unschedule或unscheduleAllSelectors停止。
本书交流讨论站点:http://www.cocoagame.net
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11584534.html
当当:http://product.dangdang.com/23606265.html
互动出版网:http://product.china-pub.com/3770734
《Cocos2d-x实战 C++卷》源代码及样章下载地址:
源代码下载地址:http://51work6.com/forum.php?
mod=viewthread&tid=1155&extra=page%3D1
版权声明:本文博主原创文章。博客,未经同意不得转载。
cocos2d-x游戏循环和日程安排的更多相关文章
- cocos2d-x游戏循环与调度
每一个游戏程序都有一个循环在不断运行,它是有导演对象来管理很维护.如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Scheduler)对精灵等对象的运行进行调度.因为Node类封装了Sc ...
- dhtmlxScheduler日程安排控件
dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
- C#游戏开发中快速的游戏循环
C#游戏开发中快速的游戏循环的实现.参考<精通C#游戏编程>一书. using System; using System.Collections.Generic; using System ...
- Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...
- Win2D 中的游戏循环:CanvasAnimatedControl
Win2D 是 DirectX 的一个高层封装,提供了极大 DirectX 性能的同时,又具有很好用的 API 设计. 用 Win2D 除了能做出高性能的视觉效果之外,还可以轻而易举地搭建一个游戏循环 ...
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Visio日程安排图
黄日历: 怎么创建呢? 首先找到日程安排图表 然后找到日历 这就是日历的形状模块 拖动“日”日历形状进行创建 创建好的日历通过右键单击选择"配置"来修改日期 这是周日历 与日日历不 ...
- Python:pyglet学习(3):游戏循环
在我们编游戏时,经常会用到一个无限循环,这就叫游戏循环. 先用@win.event试试 import pyglet as p win=p.window.Window(800,600) @win.eve ...
随机推荐
- Juuluu 旗下企业站点管理系统3.0.1公布!
KgE金刚企业站点管理系统是广州聚龙软件为国内中小企业开发的一款企业站点管理系统,KgE採用可视化的标签模型,可在Dreamvear等网页编辑下可视化编辑,KgE使用javaeemsyqlyuijqu ...
- Debian/Ubuntu Linux 下安装LLVM/Clang 编译器
第一步,首先编辑 /etc/apt/sources.list,增加下面源: (加入源后务必执行apt-get update,假设有错误提示,先执行第二步,然后apt-get update) Debia ...
- 基于redis的cas集群配置(转)
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- 基于visual Studio2013解决C语言竞赛题之1074八皇后
题目 解决代码及点评 /************************************************************************/ /* ...
- python 获取当前日期 星期
from datetime import datetime d =datetime.today() #获取当前日期时间 d.isoweekday() #获取时间周几
- robotframework ride 版本兼容问题
在安装robotFramework ride的时候,必须需要使用wxpython 目前使用的wxpython 还必须是unicode 版本的要不然不支持中文 目前使用的 wx.version.2.8. ...
- 3篇OAuth的文章
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html http://blog.unvs.cn/archives/oauth-qq1.0-devel ...
- TApplication.Initialize的前世今生
---------------------------------------------------------------------------------------------------- ...
- perl的一些基本用法
ReadLine support available (try 'install Bundle::CPAN')cpan>进入cpan的shell,好了,我为了安装spamassassin,需要安 ...
- 003.android资源文件剖析(Resources)
android的资源文件使用的重要性,不言而喻.让我们从潜到深逐渐来了解吧. 一:android的基本资源: 1.字符串资源 android的资源文件保存在:res\values\ 2.布局资源 an ...