CommandSpine.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { _decorator, Component, Node, sp, animation, EventHandler } from 'cc';
  2. import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
  3. const { ccclass, property, requireComponent } = _decorator;
  4. @ccclass('CommandSpine')
  5. @requireComponent(ResourceLoader)
  6. export class CommandSpine extends Component {
  7. @property({ type: ResourceLoader, tooltip: "资源加载组件" }) res: ResourceLoader;
  8. @property({ type: sp.Skeleton, tooltip: "spine组件" }) spine: sp.Skeleton;
  9. public autoDestory: boolean = false;
  10. public completehandle: Function;
  11. start() {
  12. this.res = this.getComponent(ResourceLoader);
  13. this.spine = this.getComponent(sp.Skeleton);
  14. }
  15. public async setData(path: string, loop: boolean, amination: string) {
  16. let spData = await this.res.load<sp.SkeletonData>(path, sp.SkeletonData);
  17. this.spine.loop = loop;
  18. this.spine.skeletonData = spData;
  19. this.spine.setAnimation(0, amination, loop);
  20. if (this.autoDestory) {
  21. this.spine.setCompleteListener(() => {
  22. this.completehandle && this.completehandle();
  23. this.node && this.node.destroy();
  24. });
  25. }
  26. }
  27. public clean(): void {
  28. this.node && this.node.destroy();
  29. }
  30. }