|
|
@@ -3,61 +3,43 @@ import { TweenEasing } from "./TweenEasing";
|
|
|
const { ccclass, property, executeInEditMode, playOnFocus } = cc._decorator;
|
|
|
/**
|
|
|
* 缓动数据
|
|
|
- * @author
|
|
|
+ * @author 薛鸿潇
|
|
|
*/
|
|
|
@ccclass("PropsData")
|
|
|
export class PropsData {
|
|
|
- @property({ tooltip: "坐标" })
|
|
|
- public position: cc.Vec2 = cc.Vec2.ZERO;
|
|
|
- @property({ tooltip: "旋转" })
|
|
|
- public angle: number = 0;
|
|
|
- @property({ tooltip: "缩放" })
|
|
|
- public scale: number = 1;
|
|
|
+ @property({ displayName: "坐标" }) public position: cc.Vec2 = cc.Vec2.ZERO;
|
|
|
+ @property({ displayName: "旋转" }) public angle: number = 0;
|
|
|
+ @property({ displayName: "缩放" }) public scale: number = 1;
|
|
|
}
|
|
|
/**
|
|
|
* 缓动数据
|
|
|
+ * @author 薛鸿潇
|
|
|
*/
|
|
|
@ccclass("TweenData")
|
|
|
export class TweenData {
|
|
|
- @property({ tooltip: "属性数据", type: PropsData })
|
|
|
- public propsData: PropsData = new PropsData();
|
|
|
-
|
|
|
- @property({ tooltip: "持续时间,单位为秒" })
|
|
|
- public duration: number = 0.3;
|
|
|
- @property({ tooltip: "延迟时间,单位为秒" })
|
|
|
- public delay: number = 0;
|
|
|
- @property({ tooltip: "是否为差值" })
|
|
|
- public isOffset: boolean = false;
|
|
|
- @property({ tooltip: "当缓动动作完成时触发", type: cc.Component.EventHandler })
|
|
|
- public onComplete: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
- @property({ tooltip: "当缓动动作启动时触发", type: cc.Component.EventHandler })
|
|
|
- public onStart: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
- @property({ tooltip: "当缓动动作更新时触发", type: cc.Component.EventHandler })
|
|
|
- public onUpdate: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
+ @property({ displayName: "属性数据", type: PropsData }) public propsData: PropsData = new PropsData();
|
|
|
+ @property({ displayName: "持续时间", tooltip: '单位:秒' }) public duration: number = 0.3;
|
|
|
+ @property({ displayName: "延迟时间", tooltip: '单位:秒' }) public delay: number = 0;
|
|
|
+ @property({ displayName: "是否为差值" }) public isOffset: boolean = false;
|
|
|
+ @property({ displayName: '完成回调', tooltip: "当缓动动作完成时触发", type: cc.Component.EventHandler }) public onComplete: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
+ @property({ displayName: '开始回调', tooltip: "当缓动动作启动时触发", type: cc.Component.EventHandler }) public onStart: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
+ @property({ displayName: '过程回调', tooltip: "当缓动动作更新时触发", type: cc.Component.EventHandler }) public onUpdate: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
}
|
|
|
/**
|
|
|
* 缓动组件,目前只支持节点的三个基础属性
|
|
|
- * 目前改动类后会导致编辑器内的属性记录丢失,请不要使用
|
|
|
- * @author
|
|
|
+ * @author 薛鸿潇
|
|
|
*/
|
|
|
@ccclass
|
|
|
@executeInEditMode()
|
|
|
@playOnFocus()
|
|
|
export class UITween extends cc.Component {
|
|
|
- @property({ tooltip: "节点初始属性", type: PropsData })
|
|
|
- public fromData: PropsData = new PropsData();
|
|
|
- @property({ tooltip: "节点目标属性", type: TweenData })
|
|
|
- public targetData: TweenData[] = [];
|
|
|
- @property({ tooltip: "要播放缓动动画的目标,不填则是当前节点", type: cc.Node })
|
|
|
- public target: cc.Node = null;
|
|
|
- @property({ tooltip: "缓动效果", type: cc.Enum(TweenEasing) })
|
|
|
- public tweenEasing: TweenEasing = TweenEasing.linear;
|
|
|
- @property({ tooltip: "执行次数,为0则一直重复执行" })
|
|
|
- public repeat: number = 1;
|
|
|
- @property({ tooltip: "单次缓动序列执行完毕时触发", type: cc.Component.EventHandler })
|
|
|
- public onOneRepeatComplete: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
- @property({ tooltip: "是否在缓动组件运行时自动播放缓动动画" })
|
|
|
- public playOnLoad: boolean = false;
|
|
|
+ @property({ displayName: "节点初始属性", type: PropsData }) public fromData: PropsData = new PropsData();
|
|
|
+ @property({ displayName: "节点目标属性", type: TweenData }) public targetData: TweenData[] = [];
|
|
|
+ @property({ displayName: '缓动节点', tooltip: "要播放缓动动画的目标,不填则是当前节点", type: cc.Node }) public target: cc.Node = null;
|
|
|
+ @property({ displayName: "缓动效果", type: cc.Enum(TweenEasing) }) public tweenEasing: TweenEasing = TweenEasing.linear;
|
|
|
+ @property({ displayName: '执行次数', tooltip: "为0则一直重复执行" }) public repeat: number = 1;
|
|
|
+ @property({ displayName: "单次完成回调", tooltip: '单次缓动序列执行完毕时触发', type: cc.Component.EventHandler }) public onOneRepeatComplete: cc.Component.EventHandler = new cc.Component.EventHandler();
|
|
|
+ @property({ displayName: "自动播放" }) public playOnLoad: boolean = false;
|
|
|
|
|
|
private _edit_play: boolean = false;
|
|
|
@property({ displayName: "编辑器预览" })
|
|
|
@@ -89,6 +71,7 @@ export class UITween extends cc.Component {
|
|
|
}
|
|
|
}
|
|
|
private t: cc.Tween<any>;
|
|
|
+ /** 剩余播放次数 */
|
|
|
private currentRepeat: number;
|
|
|
public play() {
|
|
|
if (CC_EDITOR && !this.edit_playing) return;
|