当前位置:   article > 正文

Cocos技术派 | TS版属性声明详解_cocos tp

cocos tp

先看一段代码:

cc.Class({
    extends: cc.Component,
    properties: {
        userID: 20,
        userName: "Foobar"
    }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这是一个CCClass类,用关键字 properties 声明了两个属性:userID和userName。
这种写法大家很熟悉,官方文档和范例教程里面都是用 JS 的项目,这种代码随处可见。

然后再看看属性声明的TS版:

注解式声明

 // 声明一个Sprite属性
 @property(cc.Sprite)
 backGround: cc.Sprite = null;

 // 声明一个Label属性
 @property(cc.Label)
 label: cc.Label = null;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

是不是瞬间感觉简洁多了,看着也舒坦。

接着看,还有更屌的:

使用中文名称

// 声明一个Sprite属性
    @property({
        type: cc.Sprite,
        displayName: "背景"
    })
    backGround: cc.Sprite = null;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

属性面板如下:
在这里插入图片描述

使用tooltip给属性增加提示说明

    // 声明一个带说明的属性
    @property({
        type: cc.Node,
        displayName: "底座",
        tooltip: "底部炮台的父节点"
    })
    baseNode: cc.Node = null;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

属性面板如下:
在这里插入图片描述

限制整数输入和取值范围

    // 带说明,只能输入整数,最大值10,最小值0
    @property({
        type: cc.Integer,
        displayName: "血量",
        min: 0,
        max: 10,
        tooltip: "人物当前血量"
    })
    HP = 10;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

中文内容的下拉列表

先定义一个自定义枚举

let SexyType = cc.Enum({
    未知: 0,: 1,: 2
});
  • 1
  • 2
  • 3
  • 4
  • 5

然后声明一个枚举类型的属性

    // 自定义枚举,下拉框属性,中文显示
    @property({
        type: cc.Enum(SexyType),
        displayName: "性别"
    })
    sex = SexyType.未知;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

定义文本框

只需要默认值设置为字符串,不需要显示定义type

    // 声明文本框
    @property({ displayName: "作者" })
    author = "大掌教";
    
    @property({ displayName: "Q群" })
    QQ = "704391772";
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

属性面板如下:
在这里插入图片描述

定义ValueType类型

包括Vec2,Vec3,Rect,Color等,只需要默认值设置对象实例,不需要定义type

    // 声明cc.ValueType子类型,Vec2,Vec3等
    @property({
        displayName: "坐标"
    })
    pos: cc.Vec2 = new cc.Vec2(0);
  • 1
  • 2
  • 3
  • 4
  • 5

定义滑动条

    // 声明滑动条,不加type就是浮点值
    @property({
        type: cc.Integer,
        min: 0,
        max: 120,
        step: 1,
        slide: true,
        displayName: "年龄"
    })
    age = 32;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

定义事件回调

// 声明事件回调,类似button的点击事件回调
    @property({
        type: cc.Component.EventHandler,
        displayName: "双杀"
    })
    doubleKill = new cc.Component.EventHandler();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

完整代码如下:

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

let SexyType = cc.Enum({
    未知: 0,: 1,: 2
});
@ccclass
export default class MainGame extends cc.Component {

    // 声明一个Sprite属性
    @property({
        type: cc.Sprite,
        displayName: "背景"
    })
    backGround: cc.Sprite = null;

    // 声明一个Label属性
    @property({
        type: cc.Label,
        displayName: "标题"
    })
    label: cc.Label = null;

    // 声明一个带说明的属性
    @property({
        type: cc.Node,
        displayName: "底座",
        tooltip: "底部炮台的父节点"
    })
    baseNode: cc.Node = null;

    // 带说明,只能输入整数,最大值10,最小值0
    @property({
        type: cc.Integer,
        displayName: "血量",
        min: 0,
        max: 10,
        tooltip: "人物当前血量"
    })
    HP = 10;

    // 自定义枚举,下拉框属性,中文显示
    @property({
        type: cc.Enum(SexyType),
        displayName: "性别"
    })
    sex = SexyType.未知;

    // 声明文本框
    @property({ displayName: "作者" })
    author = "大掌教";
    
    @property({ displayName: "Q群" })
    QQ = "704391772";

    // 声明cc.ValueType子类型,Vec2,Vec3等
    @property({
        displayName: "坐标"
    })
    pos: cc.Vec2 = new cc.Vec2(0);

    // 声明滑动条,不加type就是浮点值
    @property({
        type: cc.Integer,
        min: 0,
        max: 120,
        step: 1,
        slide: true,
        displayName: "年龄"
    })
    age = 32;

    // 声明事件回调,类似button的点击事件回调
    @property({
        type: cc.Component.EventHandler,
        displayName: "双杀"
    })
    doubleKill = new cc.Component.EventHandler();


    onLoad() {
        cc.Rect

    }



    start() {

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

有没有感觉TS写代码还是很爽的。
这一篇基础属性讲到这里,下一篇将会讲一下高级用法,声明自定义组件属性方法。

欢迎关注我的公众号,回复【ts好牛逼】就可以获取demo源码。

公众号ID:darkpalm

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/360008
推荐阅读
相关标签
  

闽ICP备14008679号