Cocos2d-html5 笔记2: director
今天看了cocos2d-html5代码里面的Director.
最简单的框架
先抛开cocos2d的框架不说,对于一个游戏来说,基本的逻辑框架还是很简单的,首先初始化的时候注册mouse, touch之类的事件处理函数, 然后在on_XXX_event里面改变游戏的一些状态, 之后就更新重绘图。drawScrene根据game的state和data来把画面呈现出来, interval_time用来控制帧率。
game={state, data}
init()
regist_XXX_event_handler(on_XXX_event);
regist_timer_handler(on_timeout)
run()
while(game.state.running) {
drawScrene();
sleep(interval_time)
}
on_XXX_event()
//change game state and data
on_time_out()
//animations, change game state or data.
Director
Cocos2d 的director最基本原理从逻辑上也和上面最基本的框架类似,但结构上比这个好多了, 它提供了场景切换的功能。
run loop
首先看一下游戏是怎么跑以来的, 在application.run里面会设置一个timer, 在timer的callback里面会去调用director的mainloop, mainloop也就去画一帧场景吧
Application.run -->SetInterval(Director.mainloop, animationInterval) Director.mainloop --> Director.drawScrene --> Director.runningScrene.vist()
Director.runningScrene.vist()这个会遍历Screne这个Node,把整个screne画出来
然后director还提供了俩个函数,pause and resume, 在pause的时候会把animationInterval改大些,省的浪费Cpu, 在resume 的时候再改回去.
Screne 管理
director里面有个screne的stack,这样就可以对screne作push, pop, remove, replace等操作了, 这个和一般的堆栈操作没啥不同, 不过需要切换场景的时候需要通知screne.
Director.setNextScene负责场景的切换,还有screne之间的切换效果, 比如从screne a 切换到screne b,
首先通知a场景退出
a.onExitTransitionDidStart()
a.onExit()
a.cleanup()
然后通知b场景准备好了
b.onEnter()
b.onExitTransitionDidFinished()
一般都是在onEnter里面把事件处理函数给注册好,然后在onExit的时候取消注册, 这儿用的是delegate的模式,screne和layer都是从Node派生出来的,Screne基本上没增加什么功能。 Layer添加了event delegate , timer schedule之类的功能, 一般写游戏都是从layer这边派生的.
其他杂项
Director它有点像一个大管家,一些比较全局的manager, 比如schedule, actionManager, EventDispather 这些也归他管 :), 还包含了一些设置Opengl state的一些函数像DepthTest, alphaBlending, projection之类的, 还有统计信息, 统计总过画了多少帧, 帧率是多少等功能.
Cocos2d-html5 笔记2: director的更多相关文章
- Cocos2d html5 笔记 1: overview
昨天接触到了cocos2d-html5的的东东了, 第一次看其源代码一头雾水,幸好samples目录下面有几个例子,可以从这个入手. MoonWarriors是一个射击类的游戏, 有点像以前玩的雷电, ...
- HTML5笔记3——Web Storage和本地数据库
上一篇:HTML5笔记2——HTML5音/视频标签详解 Web Storage概述 在HTML5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以再客户端本地保存数据的Web Storag ...
- css3 和 html5 笔记
1.css3 ie下大部分不兼容 ie9以下 浏览器低版本不兼容 需要写 -webket-transition:1s -moz-transition: 1s -o-transition:1s tran ...
- COCOS2D 学习笔记
cc.Node.scheduleUpdate:function () * schedules the "update" method. ...
- Html5笔记 表格 布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML5笔记2——HTML5音/视频标签详解
音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...
- HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...
- HTML5笔记1——HTML5的发展史及标签的改变
记得第一次接触HTML5还是在<联信永益>实习那会儿(2011),当时一个项目技术选型的时候面临两种选择,分别是Silverlight和HTML5,那是用的最新的IE浏览器版本还是IE9, ...
- cocos2d学习笔记
doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner 收费的 CCLabl ...
随机推荐
- Python 学习笔记(五)杂项
1. Assert assert len(unique_characters) <= 10, 'Too many letters' #…等价于: if len(unique_characters ...
- mysql error: Access denied for user 'root'@'localhost' (using password: YES)
昨天重装了下系统,安装好mysql后,安装了客户端工具连接mysql,提示Access denied for user 'root'@'localhost' (using password: YES) ...
- ubuntu ip
一.使用命令设置Ubuntu IP地址 1.修改配置文件blacklist.conf禁用IPV6 sudo vi /etc/modprobe.d/blacklist.conf 在文档最后添加 blac ...
- Python【基础第二篇】
元组 元组的元素不可修改 元组的元素的元素可修改 字典 Python主文件判断 name == main python中一切事物都是对象 对象是基于类创建的 对象具有的所有功能都是从类里找的 int内 ...
- FlatBuffers与protobuf性能比较
FlatBuffers发布时,顺便也公布了它的性能数据,具体数据请见Benchmark. 它的测试用例由以下数据构成"a set of about 10 objects containing ...
- 用C#.NET调用Java开发的WebService传递int,double问题
用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...
- APT攻击将向云计算平台聚焦
APT攻击作为一种高效.精确的网络攻击方式,在近几年被频繁用于各种网络攻击事件之中,并迅速成为企业信息安全最大的威胁之一. 近日,飞塔中国首席技术顾问X在谈及APT攻击时表示,随着云计算的不断发展普及 ...
- 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结(转)
add by zhj:先收藏了 摘要:评论系统是所有门户网站的核心标准服务组件之一.本文作者曾负责新浪网评论系统多年,这套系统不仅服务于门户新闻业务,还包括调查.投票等产品,经历了从单机到多机再到集群 ...
- 全球各大运营商黑莓ROM官网下载链接汇总
全球各大运营商黑莓ROM官网下载链接汇总: 先来关于8830的. 4.2.2.196的rom 8830EFS_PBr4.2.2_rel365_PL3.0.0.85_A4.2.2.196_Sprint ...
- 第三次作业随笔(new)包含了补作业
第三次作业的题目:http://www.cnblogs.com/fzuoop/p/5187275.html 第一次看到题目的时候觉得应该是挺简单的,只要把输入的那一串东西挨个判断,用数列的方法,如果碰 ...