SpriteFactory.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import { SpriteFrameManager } from "./SpriteFrameManager";
  2. /**
  3. * 快速创建对象
  4. */
  5. export class SpriteFactory {
  6. /**
  7. * 创建节点对象
  8. * @param name
  9. */
  10. public static createNode(name?: string): cc.Node {
  11. let node = new cc.Node(name);
  12. return node;
  13. }
  14. /**
  15. * 创建空的sprite对象
  16. * @param name
  17. */
  18. public static createSprite(name?: string): cc.Sprite {
  19. let node = this.createNode(name);
  20. let sprite = node.addComponent(cc.Sprite);
  21. return sprite;
  22. }
  23. /**
  24. * 创建带图片的sprite对象
  25. * @param fileName
  26. * @param frameName
  27. */
  28. public static createSpriteWithFrame(fileName: string, frameName: string): cc.Sprite {
  29. let sprite = SpriteFactory.createSprite();
  30. sprite.node.name = frameName;
  31. sprite.spriteFrame = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName);
  32. return sprite;
  33. }
  34. /**
  35. * 创建动画
  36. * @param node
  37. * @param clip
  38. * @param wrapMode
  39. */
  40. public static createAnimationWithNode(node: cc.Node, clip: cc.AnimationClip, wrapMode: cc.WrapMode = cc.WrapMode.Normal): cc.Animation {
  41. let animation = node.addComponent(cc.Animation);
  42. clip.wrapMode = wrapMode;
  43. animation.addClip(clip);
  44. return animation;
  45. }
  46. /**
  47. * 创建button
  48. * @param fileName
  49. * @param frameName
  50. * @param clickFrameName
  51. */
  52. public static createButton(fileName: string, frameName: string, clickFrameName: string): cc.Button {
  53. let sprite = SpriteFactory.createSprite();
  54. sprite.spriteFrame = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName);
  55. let spriteButton = sprite.addComponent(cc.Button);
  56. spriteButton.target = spriteButton.node;
  57. spriteButton.transition = cc.Button.Transition.SPRITE;
  58. spriteButton.normalSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName);
  59. spriteButton.pressedSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName);
  60. spriteButton.hoverSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName);
  61. spriteButton.disabledSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName);
  62. return spriteButton;
  63. }
  64. /**
  65. * label 文字
  66. * @param labelPrefab
  67. * @param content
  68. */
  69. public static createLabel(labelPrefab: cc.Prefab, content?: string): cc.Label {
  70. let node = cc.instantiate(labelPrefab);
  71. let label = node.getComponent(cc.Label);
  72. if (content) {
  73. label.string = content;
  74. }
  75. return label;
  76. }
  77. /**
  78. * 粒子特效
  79. * @param particlePrefab
  80. */
  81. public static createParticle(particlePrefab: cc.Prefab): cc.ParticleSystem {
  82. let node = cc.instantiate(particlePrefab);
  83. let particle = node.getComponent(cc.ParticleSystem);
  84. return particle;
  85. }
  86. /**
  87. * 进度条
  88. * @param prefab
  89. */
  90. public static createProgressBar(prefab: cc.Prefab): cc.ProgressBar {
  91. let node = cc.instantiate(prefab);
  92. let bar = node.getComponent(cc.ProgressBar);
  93. return bar;
  94. }
  95. }