2024-04-22 04:12:57 -07:00
|
|
|
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<StickerManager>() {
|
|
|
|
@property({ type: Node, visible: true })
|
|
|
|
private _popup: Node;
|
|
|
|
@property({ type: Sticker, visible: true })
|
|
|
|
private _stickers: Sticker[] = [];
|
|
|
|
|
|
|
|
protected start(): void {
|
|
|
|
this._popup.setScale(Vec3.ZERO);
|
|
|
|
}
|
|
|
|
|
2024-04-23 03:36:31 -07:00
|
|
|
public Show(stickerName: string, position: Vec3 = Vec3.ZERO) {
|
2024-04-22 04:12:57 -07:00
|
|
|
let sticker = this._stickers.find((s) => s.Name == stickerName);
|
2024-04-23 03:36:31 -07:00
|
|
|
this._popup.setPosition(position);
|
2024-04-22 04:12:57 -07:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|