AnimationFactory.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { SpriteFrameManager } from "./SpriteFrameManager";
  2. import Utils from "../utils/utils";
  3. /**
  4. * 动画生成管理器
  5. */
  6. export class AnimationFactory {
  7. public static readonly DEFAULT_ANIMATION_EVENT: string = "finished";
  8. public static readonly DEFAULT_ANIMATION_NAME: string = "idle";
  9. public static create(fileName: string, spriteNameFormat:string, minIndex:number,
  10. maxIndex:number, delay:number, name:string = AnimationFactory.DEFAULT_ANIMATION_NAME, isReverse:boolean = false): cc.AnimationClip {
  11. let frames : [cc.SpriteFrame];
  12. for(let i = minIndex; i <= maxIndex; i++){
  13. // Benz.log("[AnimationFactory] Add Frame {0}", Benz.format(spriteNameFormat, Benz.dataLeftCompleting(3, "0", i)));
  14. frames.push(SpriteFrameManager.getInstance().getSpriteFrame(fileName, Utils.format(spriteNameFormat, Utils.dataLeftCompleting(3, "0", i))));
  15. }
  16. if(isReverse){
  17. for(let i = maxIndex; i >= minIndex; i--){
  18. // Benz.log("[AnimationFactory] Add Frame {0}", Benz.format(spriteNameFormat, Benz.dataLeftCompleting(3, "0", i)));
  19. frames.push(SpriteFrameManager.getInstance().getSpriteFrame(fileName, Utils.format(spriteNameFormat, Utils.dataLeftCompleting(3, "0", i))));
  20. }
  21. }
  22. let clip : cc.AnimationClip = cc.AnimationClip.createWithSpriteFrames(frames, 1 / delay);
  23. clip.name = name;
  24. // console.log(clip);
  25. return clip;
  26. }
  27. }