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 并且 播放 销毁
|
|
|
|
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();
|
|
|
|
});
|
2023-11-01 02:01:35 +08:00
|
|
|
create.setAnimation(0,play,false);
|
2023-10-30 02:34:11 +08:00
|
|
|
return create;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|