Cocos2d-x 核心概念 - 游戏循环与调度
每一个游戏程序都有一个循环在不断运行,他是由导演对象来管理和维护。
如果需要场景中的精灵运动起来,我们可以在循环中使用定时器(Scheduler)对精灵等对象的运行进行调度
因为Node中封装了 Scheduler 类,所以我们可以直接使用Node中定时器相关函数
schedulerUpdateWithPriorityLua ( nHandler , priority) --每个Node对象只要调用该函数,那么这个Node对象就会定时的每帧调用一次nHandler 函数,priority是优先级,越小越先被执行 unschedulerUpdate(): --停止schedulerUpdateWithPriorityLua 的调度
function MainScene:createLayer() local layer = cc.Layer:create() --设置背景 local bg = cc.Sprite:create("HelloWorld.png") bg:setPosition(cc.p(size.width/2,size.height/2)) bg:setAnchorPoint(0.5,0.5) layer:addChild(bg) --创建一个label local textType = cc.Label:createWithSystemFont("Hello World","Arial",20) textType:setPosition(cc.p(size.width/2,size.height*3/4)) textType:setAnchorPoint(0.5,0.5) textType:setTextColor(cc.c4b(0,0,255,255)) layer:addChild(textType) --定义update(delta)调度函数 local function update(delta) local x,y = textType:getPosition() textType:setPosition(cc.p(x+2,y-2)) end --开始游戏调度 layer:scheduleUpdateWithPriorityLua(update,0) --开启游戏调度,按照频率进行调度,0是默认值 local function onNodeEvent(tag) --层处理事件回调函数 if tag == "exit" then --判断是否推出层处理事件 layer:unscheduleUpdate() --代码停止调度 end end layer:registerScriptHandler(onNodeEvent) --注册层事件监听器 return layer end
下面的代码将实现文本滚动效果
local size = cc.Director:getInstance():getWinSize() local MainScene = class("MainScene",function() return cc.Scene:create() end) function MainScene.create() local scene = MainScene.new() scene:addChild(MainScene:createLayer()) return scene end function MainScene:createLayer() local layer = cc.Layer:create() --设置背景 local bg = cc.Sprite:create("HelloWorld.png") bg:setPosition(cc.p(size.width/2,size.height/2)) bg:setAnchorPoint(0.5,0.5) layer:addChild(bg) --创建一个label local textType = cc.Label:createWithSystemFont("Hello World","Arial",20) textType:setPosition(cc.p(size.width/2,size.height*3/4)) textType:setAnchorPoint(0,0.5) textType:setTextColor(cc.c4b(0,0,255,255)) layer:addChild(textType) --[[ 一、定义调度函数update ----循环体 二、开始游戏调度 ----循环头 三、层处理事件回调函数 ----判断 四、注册层事件监听器 ----注册 ]] local function update(delta) local x,y = textType:getPosition() if x <size.width and x>= 0 then textType:setPosition(cc.p(x+2,y)) else if x >= size.width then textType:setAnchorPoint(0,0.5) x,y = textType:getPosition() if x <size.width and x>= 0 then textType:setPosition(cc.p(x+2,y)) else textType:setAnchorPoint(1,0.5) textType:setPosition(cc.p(0,y)) end end end end layer:scheduleUpdateWithPriorityLua(update,0) local function onNode(tag) if tag == "exit" then layer:unscheduleUpdate() end end layer:registerScriptHandler(onNode) return layer end return MainScene
Cocos2d-x 核心概念 - 游戏循环与调度的更多相关文章
- cocos2d-x游戏循环与调度
每一个游戏程序都有一个循环在不断运行,它是有导演对象来管理很维护.如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Scheduler)对精灵等对象的运行进行调度.因为Node类封装了Sc ...
- cocos2d-x游戏循环和日程安排
每场比赛有一个程序执行周期继续.这是导演对象来管理非常维修.在运动假设需要的场景精神,我们可以使用计时器在游戏圈(Scheduler)精灵和其他对象进行调度. 由于Node类封装了Scheduler类 ...
- WebGPU 导入[2] - 核心概念与重要机制解读
目录 1. 核心概念 ① 适配器和设备 ② 缓冲.纹理.采样器 ③ 绑定组 ④ 着色器与管线 ⑤ 编码器与队列 2. 重要机制 ① 缓冲映射机制 ② 时间线 1. 核心概念 这部分不会详细展开,以后写 ...
- 刀哥多线程GCD核心概念gcd
GCD GCD 核心概念 将任务添加到队列,并且指定执行任务的函数 任务使用 block 封装 任务的 block 没有参数也没有返回值 执行任务的函数 异步 dispatch_async 不用等待当 ...
- cocos2d-x一些核心概念截杀
Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导演, 场景,层,节点,精灵,菜单动作 ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
- JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)
1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...
- 深度揭秘腾讯云新一代企业级HTAP数据库TBase核心概念
腾讯云PostgreSQL-XZ(PGXZ)经过公司内部多年业务的打磨,在2017年改名为TBase后,正式对外推出,目前已在政务.医疗.公安.消防.电信.金融等行业等行业的解决方案中大量应用.TBa ...
- kubernetes核心概念
摘抄自: https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...
随机推荐
- linux rhel7 dock6.7安装
1. 下载dock6.7 先申请license 在这个网址下载http://dock.compbio.ucsf.edu/Online_Licensing/index.htm 2. tar zxvf * ...
- zjuoj 3773 Paint the Grid
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3773 Paint the Grid Time Limit: 2 Secon ...
- memcached SASLAUTH 启动
1.环境描述: Linux 服务器,memcached1.4.5 登录linux的用户名tuxedo,密码tuxedo 2.启动memcached sasl认证 p.p1 { margin: 0.0p ...
- Python爬虫爬取百度贴吧的帖子
同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...
- python与ruby的差别
1.引用文件差别 Ruby:同一目录下的文件,如/usr/local/ruby/foo.rb与/usr/local/ruby/bar.rb两个文件.如果直接在foo.rb中 require 'bar' ...
- 剖析javascript全局变量和局部变量
首先要记住: javascript是弱类型语言,它只有一种变量类型(var),为变量赋值时会自动判断类型并进行转换. 全局变量和局部变量如何声明? 全局变量声明: 第一种方式(函数外) var a; ...
- Terra Vista 6.2
最近在做虚拟仿真相关工作,想把GIS中的一些想法用虚拟显示技术实现,在保证准确性的同时,提高展现效果. 前不久在朋友圈获得了一个强大的三维地形构建软件Terra Vista 6.2,据说这个软件是加拿 ...
- MVC模式
1.MVC的概念 1.1什么是MVC? MVC是一种架构型模式,它本身不引入新的功能,只是指导我们把web应用结构做的更加合理,实现逻辑与页面相分离. ...
- Java8-Function使用及Groovy闭包的代码示例
导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...
- mysql 启动不了了
在做测试的工程中,发现mysql启动失败,报错信息如下: --03T08::.969163Z mysqld_safe mysqld from pid file /var/data/my3306/run ...