94 lines
2.2 KiB
TypeScript
94 lines
2.2 KiB
TypeScript
import { _decorator, Component, Label, Node, Animation, tween, Vec3 } from "cc";
|
|
import { EventDispatcher } from "../libs/EventDispatcher";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass("BombEffect")
|
|
export class BombEffect extends Component {
|
|
// 提示语数组
|
|
private bombTips: string[] = [
|
|
"完美",
|
|
"真棒",
|
|
"棒呆",
|
|
"太棒了",
|
|
"无敌",
|
|
"超棒",
|
|
"天才",
|
|
];
|
|
// 爆炸标题 Lable
|
|
@property(Label)
|
|
private bombLabel: Label = null;
|
|
|
|
// 爆炸图片节点
|
|
@property(Node)
|
|
private bombImageNode: Node = null;
|
|
|
|
// 动画组件
|
|
private bombAnimation: Animation = null;
|
|
|
|
onLoad() {
|
|
// 初始化动画组件
|
|
this.bombAnimation = this.bombImageNode.getComponent(Animation);
|
|
// 监听动画完成事件
|
|
this.bombAnimation.on(
|
|
Animation.EventType.FINISHED,
|
|
this.onAnimationFinished,
|
|
this,
|
|
);
|
|
// 设置随机的提示语
|
|
this.setBombTip();
|
|
// 监听小恐龙吃到音符事件
|
|
EventDispatcher.getTarget().on(
|
|
EventDispatcher.DINO_EAT_NOTE,
|
|
this.hideBombTip,
|
|
this,
|
|
);
|
|
}
|
|
|
|
// 动画完成事件
|
|
private onAnimationFinished() {
|
|
// 隐藏爆炸图片
|
|
this.bombImageNode.active = false;
|
|
// 标题缩小到 0.1
|
|
tween(this.bombLabel.node)
|
|
.to(0.2, { scale: new Vec3(0.1, 0.1, 1) })
|
|
.call(() => {
|
|
// 销毁整个特效节点
|
|
this.node.destroy();
|
|
})
|
|
.start();
|
|
}
|
|
|
|
// 播放爆炸特效
|
|
public playBombEffect() {
|
|
// 播放动画
|
|
this.bombAnimation.play("bomb");
|
|
// 显示爆炸标题
|
|
this.bombLabel.node.active = true;
|
|
// 放大标题1.1倍速
|
|
tween(this.bombLabel.node)
|
|
.to(0.5, { scale: new Vec3(1.1, 1.1, 1) })
|
|
.start();
|
|
}
|
|
|
|
// 设置随机的提示语
|
|
private setBombTip() {
|
|
let randomIndex = Math.floor(Math.random() * this.bombTips.length);
|
|
// 设置爆炸标题的文本
|
|
this.bombLabel.string = this.bombTips[randomIndex];
|
|
}
|
|
|
|
// 隐藏爆炸标题
|
|
private hideBombTip() {
|
|
// 隐藏爆炸标题
|
|
this.bombLabel.node.active = false;
|
|
}
|
|
|
|
// 隐藏爆炸特效
|
|
private hideBombEffect() {
|
|
// 隐藏爆炸特效
|
|
this.node.active = false;
|
|
}
|
|
|
|
update(deltaTime: number) {}
|
|
}
|