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

如果需要场景中的精灵运动起来,我们可以在循环中使用定时器(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. DNS压力测试工具dnsperf简介

    dnsperf是我最近写的一个开源的DNS压力测试工具,用户可以用它来对DNS服务器或者Local DNS做压力测试.dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件. dns ...

  2. TIJ——Chapter Eight:Polymorphism

    The twist |_Method-call binding Connecting a method call to a method body is called binding. When bi ...

  3. Generate Ubuntu Install Media On Mac

    Opps, my computer system was broken again... Let's repire it. Introduction The system of my PC is br ...

  4. Elasticsearch 聚合

    桶(bucket)聚合 满足条件的结果集合.桶可以嵌套 标(metric)聚合 满足条件的结果集合的一些指标.如count,max等.

  5. Qt timer学习

    QTimer(重复和单发计时器) 应用QTimer时,先创建一个QTimer类,利用connect将timeout()与对应槽函数连接,在调用start()函数设置定时器时间间隔,每经过设置时间后,定 ...

  6. 基于海明距离的加权平均值人职匹配模型(Sqlserver2014/16内存表实现)

    最近给某大学网站制作一个功能,需要给全校所有的学生提供就业单位发布职位的自动匹配,学生登陆就业网,就可以查看适合自己的职位,进而可以在线投递. 全校有几万名学生,注册企业发布的职位也有上万,如何在很短 ...

  7. Meteor全栈开发平台 - 不仅仅是前端

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

  8. python直接执行另一个文件中的代码

    看你弄的这么辛苦,给你的方法exec(open(".py","r").read)open(".py",'r').read() 就是读取文件的 ...

  9. DOM节点

    DOM的一个想法 让我们从下面的HTML开始学习吧: <html> <head> <title>The title</title> </head& ...

  10. 基于php开发的RESTful ApiDoc文档

    apiDoc基于rest的web API文档生成器,可以根据代码注释生成web api文档,自动生成静态的html网页文档,不仅支持项目版本号,还支持API版本号. 使用apiDoc不需要自己麻烦的调 ...