import { SpriteFrameManager } from "./SpriteFrameManager"; /** * 快速创建对象 */ export class SpriteFactory { /** * 创建节点对象 * @param name */ public static createNode(name?: string): cc.Node { let node = new cc.Node(name); return node; } /** * 创建空的sprite对象 * @param name */ public static createSprite(name?: string): cc.Sprite { let node = this.createNode(name); let sprite = node.addComponent(cc.Sprite); return sprite; } /** * 创建带图片的sprite对象 * @param fileName * @param frameName */ public static createSpriteWithFrame(fileName: string, frameName: string): cc.Sprite { let sprite = SpriteFactory.createSprite(); sprite.node.name = frameName; sprite.spriteFrame = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName); return sprite; } /** * 创建动画 * @param node * @param clip * @param wrapMode */ public static createAnimationWithNode(node: cc.Node, clip: cc.AnimationClip, wrapMode: cc.WrapMode = cc.WrapMode.Normal): cc.Animation { let animation = node.addComponent(cc.Animation); clip.wrapMode = wrapMode; animation.addClip(clip); return animation; } /** * 创建button * @param fileName * @param frameName * @param clickFrameName */ public static createButton(fileName: string, frameName: string, clickFrameName: string): cc.Button { let sprite = SpriteFactory.createSprite(); sprite.spriteFrame = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName); let spriteButton = sprite.addComponent(cc.Button); spriteButton.target = spriteButton.node; spriteButton.transition = cc.Button.Transition.SPRITE; spriteButton.normalSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, frameName); spriteButton.pressedSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName); spriteButton.hoverSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName); spriteButton.disabledSprite = SpriteFrameManager.getInstance().getSpriteFrame(fileName, clickFrameName); return spriteButton; } /** * label 文字 * @param labelPrefab * @param content */ public static createLabel(labelPrefab: cc.Prefab, content?: string): cc.Label { let node = cc.instantiate(labelPrefab); let label = node.getComponent(cc.Label); if (content) { label.string = content; } return label; } /** * 粒子特效 * @param particlePrefab */ public static createParticle(particlePrefab: cc.Prefab): cc.ParticleSystem { let node = cc.instantiate(particlePrefab); let particle = node.getComponent(cc.ParticleSystem); return particle; } /** * 进度条 * @param prefab */ public static createProgressBar(prefab: cc.Prefab): cc.ProgressBar { let node = cc.instantiate(prefab); let bar = node.getComponent(cc.ProgressBar); return bar; } }