96 lines
3.1 KiB
TypeScript
96 lines
3.1 KiB
TypeScript
import AnimatorCustomization from "../../animator/AnimatorCustomization";
|
|
import { AnimationPlayer } from "../../animator/core/AnimatorBase";
|
|
|
|
const { ccclass, property } = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class CustomizationScene extends cc.Component implements AnimationPlayer {
|
|
@property(cc.Node) Cube: cc.Node = null;
|
|
|
|
private _animator: AnimatorCustomization = null;
|
|
|
|
private _curTween: cc.Tween = null;
|
|
private _call: () => void = null;
|
|
private _traget: any = null;
|
|
|
|
protected onLoad() {
|
|
this._animator = this.Cube.getComponent(AnimatorCustomization);
|
|
// 自定义动画播放必须要将实现了AnimationPlayer接口的对象传入
|
|
this._animator.onInit(this);
|
|
|
|
this.node.on(cc.Node.EventType.TOUCH_START, () => { this._animator.setTrigger('next'); }, this);
|
|
}
|
|
|
|
private move(dur: number, pos: cc.Vec3, loop: boolean) {
|
|
if (loop) {
|
|
this._curTween = cc.tween(this.Cube)
|
|
.repeatForever(
|
|
cc.tween()
|
|
.to(dur, { position: pos })
|
|
.call(() => {
|
|
this._call.call(this._traget);
|
|
})
|
|
)
|
|
.start();
|
|
} else {
|
|
this._curTween = cc.tween(this.Cube)
|
|
.to(dur, { position: pos })
|
|
.call(() => {
|
|
this._call.call(this._traget);
|
|
})
|
|
.start();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* - 实现接口 AnimationPlayer
|
|
* 设置动画播放结束的回调
|
|
*/
|
|
public setFinishedCallback(callback: () => void, target: any): void {
|
|
this._call = callback;
|
|
this._traget = target;
|
|
}
|
|
|
|
/**
|
|
* - 实现接口 AnimationPlayer
|
|
* 播放动画
|
|
*/
|
|
public playAnimation(animName: string, loop: boolean): void {
|
|
this._curTween && this._curTween.stop();
|
|
if (animName === 'idle') {
|
|
if (loop) {
|
|
this._curTween = cc.tween(this.Cube)
|
|
.repeatForever(
|
|
cc.tween()
|
|
.to(1, { scale: 2 })
|
|
.to(1, { scale: 0.5 })
|
|
.call(() => {
|
|
this._call.call(this._traget);
|
|
})
|
|
)
|
|
.start();
|
|
} else {
|
|
this._curTween = cc.tween(this.Cube)
|
|
.to(1, { scale: 2 })
|
|
.to(1, { scale: 0.5 })
|
|
.call(() => {
|
|
this._call.call(this._traget);
|
|
})
|
|
.start();
|
|
}
|
|
} else if (animName === 'move1') {
|
|
this.move(2, cc.v3(500, 500, 0), loop);
|
|
} else if (animName === 'move2') {
|
|
this.move(4, cc.v3(0, 0, 0), loop);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* - 实现接口 AnimationPlayer
|
|
* 缩放动画播放速率
|
|
*/
|
|
public scaleTime(scale: number): void {
|
|
|
|
}
|
|
}
|