昨天接触到了cocos2d-html5的的东东了, 第一次看其源代码一头雾水,幸好samples目录下面有几个例子,可以从这个入手。

MoonWarriors是一个射击类的游戏, 有点像以前玩的雷电, 一边看代码,一边玩这个游戏,基本上理解了cocos2d里面的一些基本的概念。

游戏里面有四个基本的概念,director, scene, layer, objects(spirte, menuitem, 等).

director负责scene的切换,一个scene可以有很多的layer, 每个layer上面可以画很多类型的object, 像飞船, 子弹,还有爆炸效果这些都是某种sprite。还有一些menu的控件,label, menuItem之类的。layer可以处理鼠标,键盘和触摸事件, 还可以注册timer事件。

游戏的初始化

整个App以一个最初的scene来初始化, 在资源加载完就切换到这个scene, 比如MoonWarriors代码main.js, 里面cocos2dApp是从cocos2d里面的Application派生来的。

var myApp = new cocos2dApp(SysMenu.scene);

在这个构造函数里面会去进行cocos2d的setup, 然后load一些资源,在资源load完以后, 会回调applicationDidFinishLaunching最后会切换到 sysMenu这个场景了.

cc.Director.getInstance().replaceScene(new this.startScene());

这儿用的是Director来切换场景的, Director是个全局的单例对象。

场景切换

sysMenu 这一层主要就三个按钮, newGame, about, settings。还有一些动画效果。

在sysMenu这一层,在init函数里面,会用Spirte, Menu之类的画按钮和一些显示效果, 并且这些按钮之类的可以设置回调函数。

比如 about按钮

var about = cc.MenuItemSprite.create(aboutNormal, aboutSelected, aboutDisabled, this.onAbout, this);

然后在about点击后,按钮的回调函数里面会切换到about场景..

onAbout:function (pSender) {
this.onButtonEffect();
var scene = cc.Scene.create();
scene.addChild(AboutLayer.create());
cc.Director.getInstance().replaceScene(cc.TransitionFade.create(1.2, scene));
}

About, Setting这俩个scene和这个类似吧, 显示一些游戏相关文字,然后在按钮的回调函数里面切换场景。

事件处理

在GameLayer这一层,就是主要的游戏咯,它处理touchmove, mouseMove等时间,然后更新画面.(其实吧,我觉得所有游戏都是这样子的), layer首先需要先设置以下这个层是否需要处理这些事件。

    if( 'keyboard' in sys.capabilities )
this.setKeyboardEnabled(true); if( 'mouse' in sys.capabilities )
this.setMouseEnabled(true); if( 'touches' in sys.capabilities )
this.setTouchEnabled(true);

然后在对应的回调函数onTouchesMovedonMouseDraggedonKeyDownonKeyUp处理相应的事件。

update和timer

每个layer都有一个update函数,会调用这个来更新layer, 然后可以用schedule这个函数注册一个类似于timeout的回调函数, 在GameLayer.init里面这样用了

    this.scheduleUpdate();
this.schedule(this.scoreCounter, 1);
this.schedule(this.movingBackground, 3);

然后在GameLayer.update负责更新画面, movingBackground去移动背景,scoreCounter负责统计分数以及关卡的管理.

Sprite

游戏里面的飞船,子弹,还有敌人, 以及爆炸的效果都是派生自Sprite这个类,Spirte给我感觉就是加载图片,然后对图片做各种动画效果。然后提供了各种函数比如移动, 放大, blend color之类对这些图片作变换。一般带动画效果的都可以用这个Sprite.

Cocos2d html5 笔记 1: overview的更多相关文章

  1. HTML5笔记3——Web Storage和本地数据库

    上一篇:HTML5笔记2——HTML5音/视频标签详解 Web Storage概述 在HTML5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以再客户端本地保存数据的Web Storag ...

  2. css3 和 html5 笔记

    1.css3 ie下大部分不兼容 ie9以下 浏览器低版本不兼容 需要写 -webket-transition:1s -moz-transition: 1s -o-transition:1s tran ...

  3. COCOS2D 学习笔记

    cc.Node.scheduleUpdate:function () * schedules the "update" method.                       ...

  4. Html5笔记 表格 布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. HTML5笔记2——HTML5音/视频标签详解

    音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...

  6. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  7. HTML5笔记1——HTML5的发展史及标签的改变

    记得第一次接触HTML5还是在<联信永益>实习那会儿(2011),当时一个项目技术选型的时候面临两种选择,分别是Silverlight和HTML5,那是用的最新的IE浏览器版本还是IE9, ...

  8. cocos2d学习笔记

    doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner  收费的 CCLabl ...

  9. html5笔记

    出处:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html HTML5 LocalStorage 本地存储 HTML5  ...

随机推荐

  1. 机器学习中的算法-决策树模型组合之随机森林与GBDT

    机器学习中的算法(1)-决策树模型组合之随机森林与GBDT 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使 ...

  2. WMI使用的WIN32_类库名

    WMI使用的WIN32_类库名 包括:硬件类.操作系统类.安装应用程序类.WMI服务管理类.性能计数器类1.硬件类冷却类别Win32_Fan--风扇Win32_HeatPipe--热管Win32_Re ...

  3. Maven,预加载资源文件

    预加载资源文件需要先启用功能: <build> <resources> <resource> <directory>src/main/resources ...

  4. WebGIS的大众化服务

    WebGIS是Web技术与GIS相结合的产物.WebGIS的真正意义在于,它将GIS从专业应用推向了大众化服务,同时为地理信息共享提供了方便而有效的途径. 一.ESRI大会关于WebGIS的报告 纵观 ...

  5. .NET在IE9中页面间URL传递中文变成乱码的解决办法

     在.Net的项目中,鼠标点击查询按钮,转到查询页面,但URL中包含中文时,传到服务器端后,中文变成了乱码(只有IE9出现该问题).       尝试使用Server.UrlEncode()进行编码, ...

  6. For Microsoft Azure Network VNET to VNET Connection

    将一个 Azure 虚拟网络 (VNet) 连接到另一个 Azure 虚拟网络非常类似于将虚拟网络连接到本地站点位置.这两种连接类型都使用虚拟网络网关通过 IPsec/IKE 提供安全隧道.连接的 V ...

  7. x-debug配置简述 - chunyu

    一 x-debug 是什么?在配置之前,先解决一个问题,x-debug 是什么?我也不查标准答案了,就说说个人理解.x-debug是一个PHP调试工具,帮助开发者在IDE里面进行代码的断点调试,效果如 ...

  8. Spark的任务处理流程

    持续推送....

  9. [翻译]创建ASP.NET WebApi RESTful 服务(7)

    实现资源分页 本章我们将介绍几种不同的结果集分页方式,实现手工分页,然后将Response通过两个不同的方式进行格式化(通过Response的Envelop元数据或header). 大家都知道一次查询 ...

  10. [iOS微博项目 - 3.4] - 获取用户信息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上   ...