73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
/*
|
||
* @Author: dgflash
|
||
* @Date: 2022-08-04 15:08:35
|
||
* @LastEditors: dgflash
|
||
* @LastEditTime: 2022-08-04 15:26:38
|
||
*/
|
||
import { sp, _decorator ,Component} from "cc";
|
||
|
||
const { ccclass, property, requireComponent, disallowMultiple } = _decorator;
|
||
|
||
/**
|
||
* Spine状态机组件(主状态机),trackIndex为0
|
||
*/
|
||
@ccclass
|
||
@disallowMultiple
|
||
@requireComponent(sp.Skeleton)
|
||
export default class MonsterSpineAnimator extends Component {
|
||
private animName: string = "move";
|
||
private loop: boolean = true;
|
||
private spine!: sp.Skeleton;
|
||
start() {
|
||
this.spine = this.getComponent(sp.Skeleton)!;
|
||
// console.log("MonsterSpineAnimator start");
|
||
this.playAnimation(this.animName, this.loop);
|
||
}
|
||
mixTime:number= 0.2;
|
||
|
||
protected onLoad(): void {
|
||
this.spine = this.getComponent(sp.Skeleton)!;
|
||
// this.spine?.setMix('atk', 'move', this.mixTime);
|
||
// this.spine?.setMix('move','atk', this.mixTime);
|
||
this.spine.setEndListener(trackEntry => {
|
||
var animationName = trackEntry.animation ? trackEntry.animation.name : "";
|
||
// console.log("[track %s][animation %s] end.", trackEntry.trackIndex, animationName);
|
||
if (animationName == "atk") {
|
||
this.spine.setAnimation(0, "move", true);
|
||
}
|
||
});
|
||
|
||
}
|
||
|
||
lateUpdate(dt: number) {
|
||
//
|
||
}
|
||
|
||
play(animName: string, loop: boolean) {
|
||
if (animName) {
|
||
this.animName = animName;
|
||
this.loop = loop;
|
||
this.spine.setAnimation(0, this.animName, this.loop);
|
||
}
|
||
else {
|
||
}
|
||
}
|
||
/**
|
||
* 播放动画
|
||
* @override
|
||
* @param animName 动画名
|
||
* @param loop 是否循环播放
|
||
*/
|
||
protected playAnimation(animName: string, loop: boolean) {
|
||
// console.log("MonsterSpineAnimator playAnimation");
|
||
if (animName) {
|
||
// console.log("MonsterSpineAnimator playAnimation animName", animName);
|
||
this.animName = animName;
|
||
this.loop = loop;
|
||
this.spine.setAnimation(0, this.animName, this.loop);
|
||
}
|
||
else {
|
||
}
|
||
}
|
||
|
||
} |