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 ...
随机推荐
- Android中Parcelable序列化总结
在使用Parcelable对android中数据的序列化操作还是比较有用的,有人做过通过对比Serializable和Parcelable在android中序列化操作对象的速度比对,大概Parcela ...
- check————身份证
-- Access 不支持 Substring 查询,可以替换为 mid 查询. select 序号,姓名,身份证号,性别from 身份表where (len(身份证号)<>15 and ...
- 数据库元数据MetaData
本篇介绍数据库方面的元数据(MetaData)的有关知识.元数据在建立框架和架构方面是特别重要的知识,再下一篇我们仿造开源数据库工具类DbUtils就要使用数据库的元数据来创建自定义JDBC框架. 在 ...
- 基于visual Studio2013解决面试题之0707最小元素
题目
- 最长公共子序列python实现
最长公共子序列是动态规划基本题目,以下依照动态规划基本步骤解出来. 1.找出最优解的性质,并刻划其结构特征 序列a共同拥有m个元素,序列b共同拥有n个元素,假设a[m-1]==b[n-1],那么a[: ...
- 报错消息写在AT SELECTION-SCREEN OUTPUT和START-OF-SELECTION事件下的区别
今天面试没答上来的问题,其实我是知道的,以前也遇到过.... START-OF-SELECTION下的话会在左下角报错 AT SELECTION-SCREEN OUTPUT消息会弹出框,然后点击就没有 ...
- MFC程序的消息处理顺序
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- Swift - 页控件(UIPageControl)的用法
使用页控件可以用来展示多个桌面.比如很多应用第一次登陆时,会在开始页面使用页控件来介绍功能,通过左右滑动来切换页. 通常我们使用UIPageControl和UIScrollView相互结合来实现多页切 ...
- D2010 RTTI + Attribute 简单实现ORM
还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”.(这个白胡子的老哥哥还真很可 ...
- html中的rowspan和colspan
摘自w3school(http://www.w3school.com.cn/tags/att_td_colspan.asp)colspan 属性规定单元格可横跨的列数.<table border ...