基本语法:

1.类的定义

一般类都是集成Scene或者Layer:

var myLayer = cc.Layer.extend({类的内容});

2类内的成员变量与方法:

2.1成员变量的声明:

变量名:值,一般都习惯在成员变量名前加下划线表示是类内成员。

例如定义一个变量来表示生命值:

_hp : 100,

多条定义之间用逗号分隔。

2.2 方法的声明:

函数名:function(参数列表){函数体}

一般我们会重写类的ctor和init方法,来实现类的初始化,两个方法在类实例化时都会被调用。

重写这两个方法时,记得调用父类的相关方法,方法为this._super();

Cocos2d中使用this指示当前类。

3. 类的实例化

使用new来实例化一个类,是否要传入参数要看ctor的设定,实例化时的参数列表与ctor一致。

4.全局变量与数组

在使用cocos2d引擎编写游戏时,常常需要一些全局变量,一般的习惯是把它们定义到Global.js中。

一个空类的定义为 GLOABL = {}。

如果要向其中添加一些成员变量,直接使用点语法赋值即可。

例如GLOBAL.HP = 100。

也可以向类内添加函数,方法为GLOBAL.funcName = function(...){...}

定义数组的方法为 GLOBAL.ARRAY1 = [];

5.在cocos2d中可以正常使用js的语法,进行一些循环、条件分支等的编写。

6.如果要使用日志输出,可以使用js的console.log或者cocos2d自带的cc.log输出。

7.Cocos2d的常用函数与接收用户输入:

继承自CCLayer的类可以接收用户输入,又有CCNode的所有特性,一般游戏都是以此为运行的主类,下面介绍一下其中常用的一些函数:

ctor与init都已经在上面介绍,这里不再赘述。

一般游戏都需要以较高的帧率(例如60)运行,在每一帧到来时,如果类内在初始化时使用方法this.scheduleUpdate();,则在程序运行时每秒会调用帧率那么多次的update函数。

因此只要重写update函数,即可实现游戏的刷帧。

8.CCLayer想要接收用户输入,是通过在类内使用cc.eventManager的addListener方法实现的,addListener函数要求传入两个参数,第一个是监听的主体逻辑,要在其中定义监听的事件函数,使用{}来包围,第二个参数为目标,一般填写this,代表监听当前层的事件。

常用的事件包括按键按下、按键释放、鼠标按下、鼠标移动、鼠标滚动、触摸输入等,如果要做普通的网页游戏,则通过鼠标和键盘动作即可;如果是做手机应用,则需要检测触摸输入。

下面以按键输入为例,介绍按键输入的写法:

一般是在init函数中声明事件,首先要判断是否具有键盘,使用函数:

cc.sys.capabilities.hasOwnProperty(‘keyboard’),返回true则代表可用,可用才定义相关的事件函数:

  1. if(cc.sys.capabilities.hasOwnProperty('keyboard')){
  2. cc.eventManager.addListener({
  3. event: cc.EventListener.KEYBOARD,
  4. onKeyPressed:function(key,event){
  5. if(key == 87){ // W
  6. // 这里进行按下的事件处理
  7. }
  8. },
  9. onKeyReleased:function(key,event){
  10. if(key == 87){ // W
  11. // 这里进行松开的事件处理
  12. }
  13. }
  14. },this);
  15. }

Key传入的是按键的ASCII码,可以通过打印日志的方式实验。

需要特别注意的是,这个方法虽然是在类内声明的,但是调用时并不是类内,因此不能使用this获取当前类内的成员。注意到function还传入了event参数,这个参数可以用来获取自己的target,这个target就是当时addListener的第二个参数。因此我们使event.getCurrentTarget()来得到当时的target,也就是this,所有对类内的操作都要在这个基础上进行。

鼠标事件:

  1. if('mouse' in cc.sys.capabilities) {
  2. cc.eventManager.addListener({
  3. event: cc.EventListener.MOUSE,
  4. onMouseMove: function (event) {
  5. // event.getLocationX() 获取x
  6. // event.getLocationY() 获取y
  7. },
  8. onMouseScroll: function(event){
  9. // event.getScrollX() 代表横向滚动
  10. // event.getScrollY() 代表纵向滚动
  11. }
  12. }, this);
  13. }

cocos2d-js(二)cocos2d-js的基本语法与类的简介的更多相关文章

  1. 初探JavaScript(二)——JS如何动态操控HTML

    除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...

  2. H5+ 移动app学习之二 Native.js

    Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展到手机 ...

  3. JS二维数组排序组合

    需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...

  4. Cookie实现商品浏览记录--方式二:JS实现

    使用Cookie实现商品浏览记录:方式二:JS方法实现cookie的获取以及写入.当某一个产品被点击时,触发JS方法.利用JS方法判断一下,此产品是否在浏览记录中.如果不存在,则将产品ID加入到coo ...

  5. eclipse加速之禁用JS、jsp等文件的语法验证,eclipsejs

    eclipse加速之禁用JS.jsp等文件的语法验证 去除eclipse的JS验证:将windows->preference->Java Script->Validator-> ...

  6. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  7. JavaScript进阶(二)在一个JS文件中引用另一个JS文件

    在一个JS文件中引用另一个JS文件       转载地址:http://blog.csdn.net/zndxlxm/article/details/7875787 方法一 在调用文件的顶部加入下例代码 ...

  8. Vue.js 2.x笔记:基本语法(2)

    1. Vue实例及选项 1.1 创建Vue实例(new Vue instance) 每个Vue Application必须创建一个root Vue Instance. <script> v ...

  9. JS第一部分--ECMAScript5.0标准语法 (JS基础语法)

    一,调试语句 二,JS的引入方式 三,变量的使用 四,基本的数据类型 4.1,基本数据类型转换 4.2,字符串的常用方法 五,复杂数据类型 5.1,Array(数组)及常用方法 六,流程控制( 逻辑与 ...

随机推荐

  1. Cisco 的基本配置实例之五----交换机的路由功能与DHCP 功能

    5.配置交换机的路由功能 说明:只有在三层交换机上才有路由功能,其他的二层接入交换机要想在不同的vlan之间传送数据需要通过trunk口到核心交换机上进行完路由交换后才可以. TEST(config) ...

  2. java中JSON转换

    1.JSON介绍 JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符 ...

  3. JAVA GC垃圾收集器的分析

    本篇文章主要介绍了"JAVA GC垃圾收集器的分析",主要涉及到JAVA GC垃圾收集器的分析方面的内容,对于JAVA GC垃圾收集器的分析感兴趣的同学可以参考一下.       ...

  4. 给定桩号获取纵断面中的高程值(c# for civil3d)

    通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高 ...

  5. Python实现爬取需要登录的网站完整示例

    from selenium import webdriver dirver = webdriver.Firefox() dirver.get('https://music.douban.com/') ...

  6. django模板语言中的extends,block和include

    extends和block一起用 它们用于母版和子版的继承 在母版html中将一些需要替换的部分用{% block xxx %}...{% endblock %}括起来, 在子版html中,在第一行需 ...

  7. Android Support库——support annotations

    Android Support库是官方出的支持扩展库,包含了丰富的组件.工具类等,通过在Android SDK Manager中勾选以下两项来获取到. 其中,Android Support Libra ...

  8. mongo 读分析

    分布式读 读冲突 分布式中数据库有多份数据,各份数据可能存在不一致性. mongo 只会写到primary节点上,理论上来说不会有文档冲突,也就是说数据库中的数据都以primary节点为标准. 但是有 ...

  9. OpenResty 操作cookies

    在or中简单的使用cookies 复杂的操作请使用 [lua_resty_cookies](https://github.com/cloudflare/lua-resty-cookie) 基本操作 获 ...

  10. pxe无人值守安装linux机器笔记

    最近做一些集群的测试的工作,做服务器测试最根本就是要安装系统,曾经我们用十几个光驱并行安装光驱的日子过去了,自从有了pxe一两天搭建好一个集群不是梦!当然做多了集群的搭建工作最多的感受就是,其实运维工 ...