import { _decorator, CCString, Component, Node, Sprite, SpriteFrame, tween, Vec3 } from 'cc'; import Singleton from '../Singleton'; const { ccclass, property } = _decorator; @ccclass('Sticker') class Sticker { @property(CCString) public Name: string = ''; @property(SpriteFrame) public SpriteFrame: SpriteFrame; } @ccclass('StickerManager') export class StickerManager extends Singleton() { @property({ type: Node, visible: true }) private _popup: Node; @property({ type: Sticker, visible: true }) private _stickers: Sticker[] = []; protected start(): void { this._popup.setScale(Vec3.ZERO); } public Show(stickerName: string) { let sticker = this._stickers.find((s) => s.Name == stickerName); this._popup.getComponent(Sprite).spriteFrame = sticker.SpriteFrame; tween(this._popup) .set({ scale: Vec3.ZERO }) .to(0.3, { scale: Vec3.ONE }, { easing: 'backOut' }) .delay(0.5) .to(0.2, { scale: Vec3.ZERO }, { easing: 'backIn' }) .start(); } }