基本语法:

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则代表可用,可用才定义相关的事件函数:

if(cc.sys.capabilities.hasOwnProperty('keyboard')){
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyPressed:function(key,event){
if(key == 87){ // W
// 这里进行按下的事件处理
}
},
onKeyReleased:function(key,event){
if(key == 87){ // W
// 这里进行松开的事件处理
}
}
},this);
}

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

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

鼠标事件:

if('mouse' in cc.sys.capabilities) {
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseMove: function (event) {
// event.getLocationX() 获取x
// event.getLocationY() 获取y
},
onMouseScroll: function(event){
// event.getScrollX() 代表横向滚动
// event.getScrollY() 代表纵向滚动
}
}, this);
}

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. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  2. 使用pscp实现Windows 和 Linux 服务器间的远程拷贝文件

    在工作中,每次部署应用时都需要从本机Windows 服务器拷贝文件到Linux 上,有时还将Linux 上的文件拷到本机,这些操作都是可以使用pscp实现的.下文将详细描述如何使用: PSCP (Pu ...

  3. c# 复制dataset中table结构跟数据

    DataTable dt = new DataTable(); dt = ds.Tables[0].Copy();

  4. json转化为对象数组

    1.ascx传值给aspx aspx页面 <%@ Page Title="" Language="C#" MasterPageFile="~/_ ...

  5. C# 基础问答

    1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...

  6. Linux部分常用命令整理

    ./ 相当于双击 [oracle@linux01 ~]$ PWD 查看绝对路径 [oracle@linux01 ~]$ cd - 返回上一次操作的目录 [oracle@linux01 ~]$ cd . ...

  7. rhel7 配置普通用户使用sudo

    rhel服务器版本安装之后,默认创建的用户不能使用sudo.使用sudo,会提示 user1 is not in the sudoers file. This incident will be rep ...

  8. 【python标准库模块三】Os模块和Sys模块学习

    Os模块 导入os模块 import os 获取当前工作目录 os.getcwd() 切换目录,跟linux中的cd一样 os.chdir("文件夹名") 递归生成文件夹 os.m ...

  9. let 和 const 命令

    let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a / ...

  10. 毕业论文内容框架指导-适用于MIS系统

    摘要: 背景.要做什么.选用什么技术.按照什么过程.原理.或者步骤去做.最后做出了什么东西.做出来的东西有什么用. 1. 前言 系统的背景与意义:为什么要做这个系统 ? 现状调查:别人做的怎么样? 系 ...