每一个游戏程序都有一个循环在不断运行,他是由导演对象来管理和维护。

如果需要场景中的精灵运动起来,我们可以在循环中使用定时器(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 核心概念 - 游戏循环与调度的更多相关文章

  1. cocos2d-x游戏循环与调度

    每一个游戏程序都有一个循环在不断运行,它是有导演对象来管理很维护.如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Scheduler)对精灵等对象的运行进行调度.因为Node类封装了Sc ...

  2. cocos2d-x游戏循环和日程安排

    每场比赛有一个程序执行周期继续.这是导演对象来管理非常维修.在运动假设需要的场景精神,我们可以使用计时器在游戏圈(Scheduler)精灵和其他对象进行调度. 由于Node类封装了Scheduler类 ...

  3. WebGPU 导入[2] - 核心概念与重要机制解读

    目录 1. 核心概念 ① 适配器和设备 ② 缓冲.纹理.采样器 ③ 绑定组 ④ 着色器与管线 ⑤ 编码器与队列 2. 重要机制 ① 缓冲映射机制 ② 时间线 1. 核心概念 这部分不会详细展开,以后写 ...

  4. 刀哥多线程GCD核心概念gcd

    GCD GCD 核心概念 将任务添加到队列,并且指定执行任务的函数 任务使用 block 封装 任务的 block 没有参数也没有返回值 执行任务的函数 异步 dispatch_async 不用等待当 ...

  5. cocos2d-x一些核心概念截杀

    Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导演, 场景,层,节点,精灵,菜单动作 ...

  6. 【Visual C++】游戏编程学习笔记之三:游戏循环的使用

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...

  7. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  8. 深度揭秘腾讯云新一代企业级HTAP数据库TBase核心概念

    腾讯云PostgreSQL-XZ(PGXZ)经过公司内部多年业务的打磨,在2017年改名为TBase后,正式对外推出,目前已在政务.医疗.公安.消防.电信.金融等行业等行业的解决方案中大量应用.TBa ...

  9. kubernetes核心概念

    摘抄自:  https://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 1.基础架构 1.1 Master Master节点上面主要由四个模块组成:A ...

随机推荐

  1. ebs R12.2启动报错"failed to start a managed process after the maximum retry limit"

    启动日志: Error --> Process (index=1,uid=1739599208,pid=4479) failed to start a managed process after ...

  2. mysql slave to master

    1, 在maste A上面创建专门用于备份的用户Bshow master statusget log_file and log_pos 2,CHANGE MASTER TO MASTER_HOST=' ...

  3. leetcode bugfree note

    463. Island Perimeterhttps://leetcode.com/problems/island-perimeter/就是逐一遍历所有的cell,用分离的cell总的的边数减去重叠的 ...

  4. c语言的一个简单的链表

    此程序为作业题: 但不忍丢弃成果: 所以记一下: 哦,对了,有一个易错点:在链表里,字符要用字符数组,不能用单个字符. #include<stdio.h>#include<stdio ...

  5. SQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FR ...

  6. (一)NOR FALSH 讲解

    nor flash 起始地址: 1F FFFF  = 1 1111          1111 1111 1111 1111 = 2^20 *2 = 2^21=2M Nor Flash 采用了 A0- ...

  7. Apache2.4开启GZIP功能

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的 ...

  8. 目标检测方法总结(R-CNN系列)

    目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD 目录 相关背景 从传统方法到R-CNN 从R-CNN到SPP Fast R-CNN ...

  9. mysqldump导出

    mysqldump -u user -p dbname table1 table2 > db.sql mysql执行sql mysql –uroot –p -Dtest < 1.sql

  10. webservice通信调用天气预报接口实例

    转载:http://www.cnblogs.com/warrior4236/p/5668449.html 一:环境搭建 1:新建一个java project工程weatherInf 2:引入相应的ja ...