cocoscreator在ts中直接使用tween()方法

本文介绍如何在CocosCreator中通过修改creator.d.ts文件,为cc.Tween方法添加类型定义,包括各种缓动效果、可选属性及参数,以增强代码编辑体验和类型检查。

来源:摘抄自cocoscreator论坛,亲测有效

实现:在creator.d.ts中末尾添加如下代码即可:
declare namespace cc {

/** cc.tween方法 */
function tween(target: any): NewTween;

/** ease字符串,参考:https://docs.cocos.com/creator/api/zh/editor/share/easing.html */
type tweenEasing = "linear" | "fade" |
    "quadIn" | "quadOut" | "quadInOut" | "quadOutIn" |
    "cubicIn" | "cubicOut" | "cubicInOut" | "cubicOutIn" |
    "quartIn" | "quartOut" | "quartInOut" | "quartOutIn" |
    "quintIn" | "quintOut" | "quintInOut" | "quintOutIn" |
    "sineIn" | "sineOut" | "sineInOut" | "sineOutIn" |
    "expoIn" | "expoOut" | "expoInOut" | "expoOutIn" |
    "circIn" | "circOut" | "circInOut" | "circOutIn" |
    "elasticIn" | "elasticOut" | "elasticInOut" | "elasticOutIn" |
    "backIn" | "backOut" | "backInOut" | "backOutIn" |
    "bounceIn" | "bounceOut" | "bounceInOut" | "bounceOutIn";

/** 可选属性,参考:cc.Node */
type tweenProps = Partial<any>;

/** 可选参数 */
type tweenOpts = {
    progress?: Function;
    easing?: Function | tweenEasing;
}

/** cc.Tween,为了区分开来使用cc.NewTween */
class NewTween {
    then(other: Action | NewTween): NewTween;
    target(target: any): NewTween;
    start(): NewTween;
    stop(): NewTween;
    clone(target?: any): NewTween;
    to(duration: number, props?: tweenProps, opts?: tweenOpts): NewTween;
    by(duration: number, props?: tweenProps, opts?: tweenOpts): NewTween;
    set(props: tweenProps): NewTween;
    delay(duration: number): NewTween;
    call(callback: Function): NewTween;
    hide(): NewTween;
    show(): NewTween;
    removeSelf(): NewTween;
    sequence(actions: [Action | NewTween]): NewTween;
    parallel(actions: [Action | NewTween]): NewTween;
    repeat(repeatTimes: number, action?: Action | NewTween): NewTween;
    repeatForever(action?: Action | NewTween): NewTween;
    reverseTime(action?: Action | NewTween): NewTween;
    tween(target?: any): NewTween;
}

}

在 Cocos Creator 中使用 TypeScript 脚本实现 ProgressBar 进度变化,可按以下步骤操作: ### 创建 ProgressBar 节点并设置属性 首先要创建一个 ProgressBar 节点,并且设置其属性,像进度条的图像、当前进度等。示例代码如下: ```typescript import { _decorator, Component, Node, ProgressBar, Image, SpriteFrame } from 'cc'; const { ccclass, property } = _decorator; @ccclass('ProgressBarExample') export class ProgressBarExample extends Component { start() { // 创建一个 ProgressBar 节点 const progressBarNode = new Node(); progressBarNode.addComponent(ProgressBar); progressBarNode.setPosition(0, 0); // 获取 ProgressBar 组件并设置属性 const progressBarComponent = progressBarNode.getComponent(ProgressBar); progressBarComponent.totalLength = 200; // 设置进度条的总长度 progressBarComponent.progress = 0.5; // 设置进度条的初始进度 // 为 ProgressBar 设置图像 const barImageNode = new Node(); barImageNode.addComponent(Image); barImageNode.setPosition(0, 0); const barImageComponent = barImageNode.getComponent(Image); // 假设 this.getSpriteFrameByName 是一个获取 SpriteFrame 的方法 barImageComponent.spriteFrame = this.getSpriteFrameByName("barImage"); // 将图像节点添加到 ProgressBar progressBarComponent.progressImage = barImageNode; // 将 ProgressBar 节点添加到场景中 this.node.addChild(progressBarNode); } getSpriteFrameByName(name: string): SpriteFrame { // 这里需要实现获取 SpriteFrame 的逻辑 return null; } } ``` ### 实现进度变化 可以在脚本里编写方法来修改 ProgressBar 的 `progress` 属性,从而实现进度的变化。示例代码如下: ```typescript import { _decorator, Component, Node, ProgressBar, Image, SpriteFrame, sys, tween } from 'cc'; const { ccclass, property } = _decorator; @ccclass('ProgressBarExample') export class ProgressBarExample extends Component { private progressBarComponent: ProgressBar; start() { // 创建一个 ProgressBar 节点 const progressBarNode = new Node(); progressBarNode.addComponent(ProgressBar); progressBarNode.setPosition(0, 0); // 获取 ProgressBar 组件并设置属性 this.progressBarComponent = progressBarNode.getComponent(ProgressBar); this.progressBarComponent.totalLength = 200; this.progressBarComponent.progress = 0; // 为 ProgressBar 设置图像 const barImageNode = new Node(); barImageNode.addComponent(Image); barImageNode.setPosition(0, 0); const barImageComponent = barImageNode.getComponent(Image); barImageComponent.spriteFrame = this.getSpriteFrameByName("barImage"); // 将图像节点添加到 ProgressBar this.progressBarComponent.progressImage = barImageNode; // 将 ProgressBar 节点添加到场景中 this.node.addChild(progressBarNode); // 调用方法改变进度 this.changeProgress(); } changeProgress() { tween(this.progressBarComponent) .to(2, { progress: 1 }) .start(); } getSpriteFrameByName(name: string): SpriteFrame { // 这里需要实现获取 SpriteFrame 的逻辑 return null; } } ``` 在上述代码中,使用了 `tween` 来实现进度在 2 秒内从 0 到 1 的平滑变化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值