65 lines
1.9 KiB
TypeScript
Raw Normal View History

2023-10-30 02:34:11 +08:00
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";
2023-11-03 02:57:38 +08:00
import GNode from "./GNode";
2023-10-30 02:34:11 +08:00
//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
2023-11-03 02:57:38 +08:00
let spineNode = GNode.create();
2023-10-30 02:34:11 +08:00
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{
2023-11-03 02:57:38 +08:00
let spineNode = GNode.create();
2023-10-30 02:34:11 +08:00
let another = spineNode.addComponent(JNSkeleton);
another.premultipliedAlpha = false;
another.skeletonData = spine;
return another;
}
// 创建一个 Spine 并且 播放 销毁
2023-11-30 02:20:57 +08:00
static onPlaySceneSpine(scene:GBaseMode<{},{}>,pos:Vec2,spine:sp.SkeletonData,play:string):JNSkeleton{
2023-10-30 02:34:11 +08:00
let create = this.onCreateSpine(spine);
scene.addGNode(create.node,pos);
create.setCompleteListener(() => {
//销毁
create.node.destroy();
});
2023-11-01 02:01:35 +08:00
create.setAnimation(0,play,false);
2023-10-30 02:34:11 +08:00
return create;
}
}