当前位置: 首页 > news >正文

cocos2dx笔记1:概述


1.核心的类和功能

CCDirector gameLoop,实现场景绘制。多个场景之间切换控制。控制游戏的停止,暂停,等生命周期。

CCScene 场景类,每一个场景能够理解为一个游戏镜头。状态

CCLayer 图层,包含图片层,文字层。按扭层。动画层,每一个层有坐标。显示内容,消息回调处理

CCSprite 精灵层,能够实现动画播放

CCAction 动作,控制图层运动。渐变,旋转等


关系例如以下

CCDirector

    游戏运行场景CCScreen

        背景层CCLayer

            精灵CCSprite

        主层

            精灵

        控制层

            精灵


ccnode经常重写的方法:

    draw() 该方法绘制每一个node

    update() 该方法处理每一帧的逻辑变化

    ccTouchesBegan() 处理用户的交互事件


ccp 创建CGPoint对象最经常使用的宏


2.项目入口

didFinishLaunchingWithOptions:

设置RootViewController。并建立EAGLView对象__glView作为主view。__glView在创建过程中会纪录到静态变量中。引擎中通过 EAGLView.sharedEGLView()来获取这个view。全部渲染工作都是在这里实现的!。


CCApplication

CCDirectorCaller  控制消息循环,底层由CADisplayLink实现,终于调用cocos2d::CCDirector::sharedDirector()->mainLoop();完毕渲染。

CCDirector的渲染有这样几步

1.推断是否删除导演,假设是,清除导演,否则2.

2.是否无效,无效进入退出渲染

3.渲染动画

    a.计算时间增量

    b.假设没有暂停,运行导演的update

        现运行updata   后运行客户的schedule

    c.假设须要切换场景,切换场景

    d.调用m_pRunningScene->visit(); 刷新Scene,这是个递归的过程。先绘制zOrder < 0的child,然后drow自己,然后訪问z>0 的

    e.绘制 NotificationNodes 。 用于场景切换时仍能够显示的界面

    除了上边说的,visit前要kmGLPushMatrix(); visit后要kmGLPopMatrix(); 期间还要出发beforDrow和endDrow事件。

4.清除没用的对象,通过pop栈顶的autoreleasepool的方式实现


转载于:https://www.cnblogs.com/ldxsuanfa/p/10654290.html

相关文章:

  • 易语言QQpost加好友源码
  • Ansible-----常用功能
  • 2019春第六周学习编辑总结
  • 【感悟】一次不太好的寻找bug的体验,RecyclerView
  • mysql 命令启动
  • [题解]区间dp_luogu_P3147 262144
  • Permission denied: .gvfs
  • day2
  • JSP语法入门
  • 学习备忘英语单词转载
  • 存储的一些基本概念(HBA,LUN)
  • Kubenetes---Service--实践
  • HDU - 4352 XHXJ's LIS (数位dp)
  • 【*】深入理解redis主从复制原理
  • 冒泡排序,选择排序,快速排序,归并排序
  • 《剑指offer》分解让复杂问题更简单
  • 【391天】每日项目总结系列128(2018.03.03)
  • css的样式优先级
  • ES6核心特性
  • export和import的用法总结
  • HTTP请求重发
  • Redux系列x:源码分析
  • 记一次删除Git记录中的大文件的过程
  • 讲清楚之javascript作用域
  • 数据可视化之下发图实践
  • #{} 和 ${}区别
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (3)(3.5) 遥测无线电区域条例
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)计算机毕业设计ssm电影分享网站
  • (十) 初识 Docker file
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .describe() python_Python-Win32com-Excel
  • .net core使用ef 6
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 的字符串暂存池
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • @Transactional 竟也能解决分布式事务?
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [.NET]桃源网络硬盘 v7.4
  • [C++提高编程](三):STL初识
  • [CSS] - 修正IE6不支持position:fixed的bug
  • [Dxperience.8.*]报表预览控件PrintControl设置
  • [hdu2196]Computer树的直径
  • [LeeCode]—Wildcard Matching 通配符匹配问题
  • [LeetCode] 19. 删除链表的倒数第 N 个结点