DESKTOP-5RP3AKU\Jisol 6ebed0b45e 重构继承关系
2023-11-01 02:01:35 +08:00

64 lines
1.9 KiB
TypeScript

import { sp } from "cc";
import GRoleBase from "../role/GRoleBase";
import JNSkeleton from "../../../../../extensions/ngame/assets/ngame/sync/frame/game/spine/JNFrameSkeleton";
import { Node } from "cc";
import GBaseMode from "../../GBaseMode";
import { Vec2 } from "cc";
//Spine 工具
export default class GSpine{
//保存当前Spine 播放新 Spine 结束后还原
static onPlayAnotherSpine(role:GRoleBase<{}>,spine:sp.SkeletonData,play:string,fun:{
start?:(ske:JNSkeleton) => void,
end?:() => void,
} = {}):JNSkeleton{
//关闭当前角色原本的Spine
role.spine.enabled = false;
//添加新的spine
let spineNode = new Node();
role.node.addChild(spineNode);
let another = spineNode.addComponent(JNSkeleton);
another.skeletonData = spine;
fun.start && fun.start(another);
another.setCompleteListener(() => {
//还原
role.spine.enabled = true;
spineNode.destroy();
fun.end && fun.end();
});
another.setAnimation(0,play,false);
// another.setAnimation(0,play,false);
return another;
}
//创建一个Spine
static onCreateSpine(spine:sp.SkeletonData):JNSkeleton{
let spineNode = new Node();
let another = spineNode.addComponent(JNSkeleton);
another.premultipliedAlpha = false;
another.skeletonData = spine;
return another;
}
// 创建一个 Spine 并且 播放 销毁
static onPlaySceneSpine(scene:GBaseMode<{}>,pos:Vec2,spine:sp.SkeletonData,play:string):JNSkeleton{
let create = this.onCreateSpine(spine);
scene.addGNode(create.node,pos);
create.setCompleteListener(() => {
//销毁
create.node.destroy();
});
create.setAnimation(0,play,false);
return create;
}
}