BackgroundAnimation.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { _decorator, Component, Node, resources, Sprite, SpriteFrame } from 'cc';
  2. const { ccclass, property } = _decorator;
  3. @ccclass('BackgroundAnimation')
  4. export class BackgroundAnimation extends Component {
  5. private frameIndex: number = 1;
  6. private maxFrames: number = 54;
  7. private frameRate: number = 12; // 每秒12帧
  8. private deltaTime: number = 0;
  9. private reverse: boolean = false;
  10. start () {
  11. this.updateSpriteFrame();
  12. }
  13. update (dt: number) {
  14. this.deltaTime += dt;
  15. if (this.deltaTime >= 1 / this.frameRate) {
  16. this.deltaTime = 0;
  17. if(this.reverse)
  18. {
  19. this.frameIndex--;
  20. }
  21. else{
  22. this.frameIndex++;
  23. }
  24. if (this.frameIndex > this.maxFrames) {
  25. this.reverse = true;
  26. this.frameIndex--;
  27. }
  28. else if(this.frameIndex === 0 ){
  29. this.reverse = false;
  30. this.frameIndex++;
  31. }
  32. this.updateSpriteFrame();
  33. }
  34. }
  35. private updateSpriteFrame() {
  36. resources.load(`bg/bg${this.frameIndex}/spriteFrame`, SpriteFrame, (err, spriteFrame) => {
  37. if (!err && spriteFrame) {
  38. this.node.getComponent(Sprite).spriteFrame = spriteFrame;
  39. }
  40. else{
  41. console.log(err);
  42. }
  43. });
  44. }
  45. }