BackgroundAnimation.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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 bgFrames: any[] = []
  10. start() {
  11. for (let i = 0; i < 54; i++) {
  12. resources.load(`bg/bg${i + 1}/spriteFrame`, SpriteFrame, (err, spriteFrame) => {
  13. if (!err && spriteFrame) {
  14. // this.bgFrames[i] = spriteFrame
  15. } else {
  16. console.log(err)
  17. }
  18. })
  19. }
  20. }
  21. update(dt: number) {
  22. this.deltaTime += dt
  23. if (this.deltaTime >= 1 / this.frameRate) {
  24. this.deltaTime = 0
  25. this.frameIndex = (this.frameIndex + 1) % (this.maxFrames * 2)
  26. const frame =
  27. this.bgFrames[
  28. this.frameIndex >= this.maxFrames ? this.maxFrames * 2 - this.frameIndex - 1 : this.frameIndex
  29. ]
  30. if (frame) {
  31. this.node.getComponent(Sprite).spriteFrame = frame
  32. }
  33. }
  34. }
  35. }