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

如果需要场景中的精灵运动起来,我们可以在循环中使用定时器(Scheduler)对精灵等对象的运行进行调度

因为Node中封装了 Scheduler 类,所以我们可以直接使用Node中定时器相关函数

  1. schedulerUpdateWithPriorityLua ( nHandler , priority)
  2. --每个Node对象只要调用该函数,那么这个Node对象就会定时的每帧调用一次nHandler 函数,priority是优先级,越小越先被执行
  3.  
  4. unschedulerUpdate():
  5. --停止schedulerUpdateWithPriorityLua 的调度
  1. function MainScene:createLayer()
  2. local layer = cc.Layer:create()
  3. --设置背景
  4. local bg = cc.Sprite:create("HelloWorld.png")
  5. bg:setPosition(cc.p(size.width/2,size.height/2))
  6. bg:setAnchorPoint(0.5,0.5)
  7. layer:addChild(bg)
  8. --创建一个label
  9. local textType = cc.Label:createWithSystemFont("Hello World","Arial",20)
  10. textType:setPosition(cc.p(size.width/2,size.height*3/4))
  11. textType:setAnchorPoint(0.5,0.5)
  12. textType:setTextColor(cc.c4b(0,0,255,255))
  13. layer:addChild(textType)
  14. --定义update(delta)调度函数
  15. local function update(delta)
  16. local x,y = textType:getPosition()
  17. textType:setPosition(cc.p(x+2,y-2))
  18. end
  19. --开始游戏调度
  20. layer:scheduleUpdateWithPriorityLua(update,0) --开启游戏调度,按照频率进行调度,0是默认值
  21. local function onNodeEvent(tag) --层处理事件回调函数
  22. if tag == "exit" then --判断是否推出层处理事件
  23. layer:unscheduleUpdate() --代码停止调度
  24. end
  25. end
  26. layer:registerScriptHandler(onNodeEvent) --注册层事件监听器
  27. return layer
  28. end

下面的代码将实现文本滚动效果

  1. local size = cc.Director:getInstance():getWinSize()
  2.  
  3. local MainScene = class("MainScene",function()
  4. return cc.Scene:create()
  5. end)
  6. function MainScene.create()
  7. local scene = MainScene.new()
  8. scene:addChild(MainScene:createLayer())
  9. return scene
  10. end
  11. function MainScene:createLayer()
  12. local layer = cc.Layer:create()
  13. --设置背景
  14. local bg = cc.Sprite:create("HelloWorld.png")
  15. bg:setPosition(cc.p(size.width/2,size.height/2))
  16. bg:setAnchorPoint(0.5,0.5)
  17. layer:addChild(bg)
  18. --创建一个label
  19. local textType = cc.Label:createWithSystemFont("Hello World","Arial",20)
  20. textType:setPosition(cc.p(size.width/2,size.height*3/4))
  21. textType:setAnchorPoint(0,0.5)
  22. textType:setTextColor(cc.c4b(0,0,255,255))
  23. layer:addChild(textType)
  24. --[[
  25. 一、定义调度函数update ----循环体
  26. 二、开始游戏调度 ----循环头
  27. 三、层处理事件回调函数 ----判断
  28. 四、注册层事件监听器 ----注册
  29. ]]
  30. local function update(delta)
  31. local x,y = textType:getPosition()
  32. if x <size.width and x>= 0 then
  33. textType:setPosition(cc.p(x+2,y))
  34. else
  35. if x >= size.width then
  36. textType:setAnchorPoint(0,0.5)
  37. x,y = textType:getPosition()
  38. if x <size.width and x>= 0 then
  39. textType:setPosition(cc.p(x+2,y))
  40. else
  41. textType:setAnchorPoint(1,0.5)
  42. textType:setPosition(cc.p(0,y))
  43. end
  44. end
  45. end
  46. end
  47. layer:scheduleUpdateWithPriorityLua(update,0)
  48. local function onNode(tag)
  49. if tag == "exit" then
  50. layer:unscheduleUpdate()
  51. end
  52. end
  53. layer:registerScriptHandler(onNode)
  54. return layer
  55. end
  56. 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. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  2. Leetcode: Optimal Account Balancing

    A group of friends went on holiday and sometimes lent each other money. For example, Alice paid for ...

  3. multiwii 2.4配置页面中文注释

                                                                                                         ...

  4. Windows Phone 三、样式和资源

    定义样式和引用资源 <Page.Resources> <!-- 向资源字典中添加一个键为ButtonBackground值为SolidColorBrush对象 --> < ...

  5. UIDatePicker日期选取器

    //定义显示日期的格式 NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; //NSDateFormatterMediumStyl ...

  6. android案例一 电话拨号器

    效果图:   电话拨号器的核心原理:  意图   MainActivity代码:     private EditTest et_number; //加载一个布局 setContentView(R.l ...

  7. Android 开发基础及环境配置

    2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...

  8. java代码优化

    优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率. 1.尽量指定类的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java ...

  9. [原] VS新添加WebApplication项目,无法运行,请求帮助,问题如何解决

    最近在WIN10 Pro上安装运行VS2012(安装顺利),新建WebApplication项目,无法运行,编译都无法通过,但都是警告. 症状: 1.新建项目无法编译: 2.新建后,默认引用全部感叹号 ...

  10. Xcode插件描述

    Xcode插件 Xcode是iOS的集成开发环境,虽然苹果一直在不断改进Xcode,但程序员总是有各种新奇的想法和需求,当Xcode无法满足他们时,于是他们就会通过插件的方式来为Xcode增加新的功能 ...