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 ...
随机推荐
- EasyUI - NumberSpinner 组件
效果: html代码: <input id="ss" /> JS代码: $(function () { $('#ss').numberspinner({ //属性继承自 ...
- Java 23种设计模式详尽分析与实例解析之三--行为型模式
Java设计模式 行为型模式 职责链模式 模式动机:职责链可以是一条直线.一个环或者一个树形结构.链上的每一个对象都是请求处理者,职责链模式可以将请求的处理组织成一条链,并使请求链传递,由链上的处理者 ...
- java之redis篇(spring-data-redis整合) (转)
redis的知识:官网 1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/PO ...
- 问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】
现象: 点"是(Y)" 提示信息中提到的error242440_02.xml文件: 问题重现: package poi; import java.io.FileNotFoundEx ...
- VS2008通过 map 和 cod 文件定位崩溃代码行
VS 2005/2008使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一 ...
- io 测试
//其中能够实现编码的只有OutputStreamWriter和对应inputStreamReader package net; import java.io.BufferedWriter; impo ...
- Passenger/Nginx/Debian快速部署Rails
安装所需的linux包 sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl gi ...
- 首个spring mvc 测试例子搭建遇到问题记录
开发环境:jdk1.7 + tomcat7 + Eclipse Juno 首先下载spring 相关jar包 我用的是 spring-framework-3.2.1.RELEASE 下载地址:http ...
- HUNNU11342:Chemistry(模拟)
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11342 Problem description The ch ...
- SSL 中证书能否够使用IP而不是域名
前言:曾经听别人说生成证书时能够用IP地址.今天用样例证实了下用IP地址是不行的. 情景一: 生成证书时指定的名称为IP地址 样例是做单点登录时的样例.web.xml中配置例如以下: <!--该 ...