TypeScript在CocosCreater中的应用

本文介绍了TypeScript在CocosCreator中的应用,强调了它与JavaScript的联系以及使用时需要注意的语法差异,如变量定义、方法参数和返回值的类型声明。通过使用TypeScript,开发者可以获得更好的编辑器提示,并能方便地定义和应用各种属性,包括基本类型和引用类型,以增强游戏开发的效率和代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与JavaScript的联系

  1. TypeScript , 强类型的 JavaScript ,可以编译为纯JavaScript
  2. :链接: TS的手册.
  3. 使用TS的原因:JS没有类型标识,编辑器无法精确的提示,为方便书写,使用TS。同时TS支持JS的大部分语法,只是注意变量定义、方法返回的特性等即可。TypeScript的语法比较庞杂,无需深究

使用时要注意的语法

  1. 变量定义
    JS:
   var str = "shaofa";
   var a = 10;
   var node = this.node;

TS:

    let str : string = "shaofa";
    let a : number = 10;
    let node : cc.Node = this.node;
  1. 方法的参数
    JS
   moveLeft ( evt ) {
   } 

TS

   moveLeft( evt : cc.Event.EventMouse ) {
   }
  1. 方法的返回值
    JS
    sum (x, y) {
        return x + y;
    }

TS

    sum (x:number, y:number) :number  {
        return x + y;
    }

使用时大部分的区别,加上类型的声明就行了,让VSCode能够根据类型提示,不需要使用深入特性。

属性的定义

   @property("string")
   time : string = "";

其中,@property称为装饰器 ( 同Java中的注解语法)

定义规则:

  1. 若无 @property注解,则不会出现在Cocos Creator属性面板
  2. @property中,应该指明类型
    @property(“string”)
    @property(cc.Node)
  3. 基本类型,可以不指定类型
    string , number , boolean , bigint
  4. TypeScript里有 number 和 Number 两种类型:number算是基本类型、Number算是引用类型 ( 对象 )

属性的应用

属性的分类:

  1. 基本类型

string , number, boolean, bigint
注意是number没有细分

  1. 引用类型

cc.Node 节点
cc.SpriteFrame 图片帧资源
cc.AudioClip 音频资源

基本类型的应用:

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property
    step: number = 20;

    @property
    towardsLeft: boolean = true;

    // LIFE-CYCLE CALLBACKS:

    onLoad () {

    }

    start () {
        this.node.on('mousedown', this.move, this);
    }


    move (evt :cc.Event.EventMouse ){
        if(this.towardsLeft)
        {
            this.node.x -= this.step; // 向左走
        }
        else
        {
            this.node.x += this.step; // 向右走
        }
    }
   
    // update (dt) {}
}

在这里插入图片描述
在这里插入图片描述
注:

1 . 一个脚本,可以重复使用,应用于多个节点
2. 脚本组件的属性,可以在属性面板里指定初始值

引用类型属性的应用:

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property
    step: number = 20;

    @property
    towardsLeft: boolean = true;

    @property(cc.AudioClip)
    audio: cc.AudioClip = null;
    

    // LIFE-CYCLE CALLBACKS:

    onLoad () {

    }

    start () {
        this.node.on('mousedown', this.move, this);
    }


    move (evt :cc.Event.EventMouse ){
        if(this.towardsLeft)
        {
            this.node.x -= this.step; // 向左走
        }
        else
        {
            this.node.x += this.step; // 向右走
        }

        if(this.audio != null)
        {
            cc.audioEngine.play(this.audio, false, 1);
        }

    }
   
    // update (dt) {}
}

play(clip,loop,volume)方法参数:
clip: AudioClip The audio clip to play.
loop :Boolean Whether the music loop or not.
volume :Number Volume size.

实现了点击图标运动时的音效播放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值