定义类

var Sprite = cc.Class({

name: "sprite"

});

var obj = new Sprite();

定义的类的类型名为 Sprite 可以用 new 构造一个对象。

也可以不定义类名,直接构造类。

构造函数——ctor/ __ ctor__

ctor 不允许含有参数,如果构造时需要用到参数,必须使用__ctor__

var Sprite = cc.Class({

ctor: function () {

cc.log(this instanceof Sprite); // true

}

});

继承——extends

// 父类

var Shape = cc.Class();

// 子类

var Rect = cc.Class({

extends: Shape

});

父类构造函数

不论子类是否有定义构造函数,子类实例化前父类的构造函数都会被自动调用。

不需要尝试调用父类的构造函数,否则父构造函数就会重复调用。

在一些很特殊的情况下,父构造函数接受的参数可能和子构造函数无法兼容。这时开发者就只能自己手动调用父构造函数并且传入需要的参数,这时应该将构造函数定义在__ ctor__中。

var Node = cc.Class({

ctor: function () {

this.name = "node";

}

});

var Sprite = cc.Class({

extends: Node,

ctor: function () {

// 子构造函数被调用前,父构造函数已经被调用过,所以 this.name 已经被初始化过了

cc.log(this.name); // "node"

// 重新设置 this.name

this.name = "sprite";

Node.call(this); // 别这么干!

this._super(); // 也别这么干!

}

});

var obj = new Sprite();

cc.log(obj.name); // "sprite"

属性声明

Cocos 类中,将声明的属性放在 properties 中,分简单声明和完整声明。

简单声明:

当声明的属性为基本 JavaScript 类型时,可以直接赋予默认值

当声明的属性具备类型时(如:cc.Node,cc.Vec2 等),可以在声明处填写他们的构造函数来完成声明

当声明属性的类型继承自 cc.ValueType 时(如:cc.Vec2,cc.Color 或 cc.Rect),除了上面的构造函数,还可以直接使用实例作为默认值

当声明属性是一个数组时,可以在声明处填写他们的类型或构造函数来完成声明

properties: {

height: 20, // number

type: "actor", // string

loaded: false, // boolean

target: null, // object

target: cc.Node,

pos: cc.Vec2,

pos: new cc.Vec2(10, 20),

color: new cc.Color(255, 255, 255, 128),

any: [], // 不定义具体类型的数组

bools: [cc.Boolean],

strings: [cc.String],

floats: [cc.Float],

ints: [cc.Integer],

values: [cc.Vec2],

nodes: [cc.Node],

frames: [cc.SpriteFrame],

}

完整声明

有些情况下,我们需要为属性声明添加参数,这些参数控制了属性在属性检查器中的显示方式,以及属性在场景序列化过程中的行为

常见属性:

default: 设置属性的默认值,这个默认值仅在组件第一次添加到节点上时才会用到

type: 限定属性的数据类型

visible: 设为 false 则不在 属性检查器 面板中显示该属性

serializable: 设为 false 则不序列化(保存)该属性

displayName: 在 属性检查器 面板中显示成指定名字

tooltip: 在 属性检查器 面板中添加属性的 Tooltip

properties: {

score: {

default: 0,

displayName: "Score (player)",

tooltip: "The score of player",

}

}

注:可以在 onl oad 函数中用 this 设置属性,防止变量在属性检查器中赋值后无法改变。

静态变量

静态变量或静态方法可以在原型对象的 statics 中声明:

var Sprite = cc.Class({

statics: {

// 声明静态变量

count: 0,

// 声明静态方法

getBounds: function (spriteList) {

// ...

}

}

});

重写

子类方法可以直接重写父类方法

用 this._super 调用父类成员

var Shape = cc.Class({

getName: function () {

return "shape";

}

});

var Rect = cc.Class({

extends: Shape,

getName: function () {

var baseName = this._super();

return baseName + " (rect)";

}

});

var obj = new Rect();

cc.log(obj.getName()); // "shape (rect)"

标签:cc,Class,CocosCreator,var,构造函数,声明,class,属性

来源: https://blog.csdn.net/qq_43575267/article/details/88796163

creator 静态属性_CocosCreator cc.class声明类相关推荐

  1. Swift - 类型属性(类静态属性)和类方法(类静态方法)

    1,结构体struct和枚举enum的静态属性,静态方法使用static关键字 1 2 3 4 5 6 7 8 9 10 struct Account {      var amount : Doub ...

  2. php静态方法怎么调用非静态属性,关于静态方法不能调用类中的非静态属性的理解...

    class test{ public $a; public function game(){ echo "123"; } public static function name() ...

  3. creator 静态属性_GitHub - sunjianhua/dbcxx: 快速处理静态数据

    快速处理静态数据 在游戏中不会产生变化的基础数据为静态数据,比如技能属性,物品属性等,在RPG或模拟经营类游戏,用到静态数据的地方尤其多,使用也非常频繁,因为物品.道具.技能.任务等的基础数据都是静态 ...

  4. creator 静态属性_cocos creator 属性面板设置

    // Author:lerry(大掌教) // 微信公众号ID:darkpalm // Q群:704391772 const { ccclass, property } = cc._decorator ...

  5. php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

    php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...

  6. php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法

    PHP使用static关键字声明静态属性和静态方法 在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法. 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用. ...

  7. 一个ABAP调试器里查看类的静态属性的小技巧

    我们知道,像如图一这种类的静态属性,因为不属于类的实例所有,因此调试到这个类的方法内部时,只能通过图二演示的两种方式在调试器显示该属性的值.而一旦调试到该类方法的外部,通常就只能通过"类名= ...

  8. PHP中的静态属性、静态方法、常量属性

    2019独角兽企业重金招聘Python工程师标准>>> 1.静态属性.静态方法 在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性就是&q ...

  9. 静态属性、静态方法、静态代码块

    1.什么是静态属性.静态方法 用static修饰符修饰的属性和方法叫作静态属性和静态方法 静态属性和非静态属性的区别: 1.在内存中存放的位置不同:所有static修饰的属性和方法都存放在内存的方法区 ...

最新文章

  1. (转)搭建企业内部yum仓库(centos6+centos7+epel源)
  2. 零基础入门学习Python(18)-全局变量与局部变量
  3. js window.open()实现打印,如何在关闭打印窗口时刷新父窗口
  4. 外国wince学习论坛收集
  5. cdf日上免税店_cdf会员购吐槽大会!从上海日上开始!
  6. 2017年2月14日
  7. PDF编辑器(widsmob pdfedit)v3.0.1
  8. 哈夫曼编码的理解(Huffman Coding)
  9. 右下角任务栏弹出天猫广告的解决办法,搞了半天原来是搜狗拼音在捣鬼!附搜狗双拼党转投微软拼音怀抱教程
  10. [转]IE Javascript 脚本失效解决办法
  11. Linux中的split命令,文件切割
  12. FreeRDP的安装方法
  13. 奇点大学人工智能专家:人造智能大脑已接近现实
  14. Pikachu系列——RCE
  15. postman之什么是接口
  16. 【搜索那些事】细谈lucene(一)初识全文资源检索框架lucene
  17. 乡村少年宫计算机小组活动教案,少年宫计算机组教案定稿版.docx
  18. 针式打印机打印WEB页面字体不清晰,解决方法
  19. 小米手机通过电脑上网
  20. Java中Date转Long 和Long转Date

热门文章

  1. icmp消息类型报告传输_ICMP消息的类型和ICMP消息格式
  2. JDK 9 对字符串 String 的优化,挺有意思!
  3. 支付宝上市,让我损失了2000万(盘点这些年错过的机会)
  4. oracle chr()和字符连接
  5. 二、WIN10 64位下Pycharm打包.py程序为可执行文件exe
  6. 微信公众号天气与聊天机器人小功能
  7. JDBC中开启事务的批量插入操作
  8. Win10中如何找到并打开SqlServer2008 R2配置管理器
  9. 重构手法——提炼函数、搬移函数、以多态取代条件表达式
  10. 多多进宝推广团队_多多进宝推广形式及推手寻找、佣金结算方式是怎样的?