| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { _decorator, Component, Node, sp, tween, v3 } from 'cc';
- import { DataSystem } from '../core/data/DataSystem';
- import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
- import { BitmapFont } from '../core/ui/BitmapFont';
- import { ConfigData } from '../data/ConfigData';
- import { Hero } from './Hero';
- const { ccclass, property } = _decorator;
- @ccclass('LeaderSkillShow')
- export class LeaderSkillShow extends Component {
- @property({ type: ResourceLoader, tooltip: "资源加载组件" }) res: ResourceLoader;
- @property({ type: sp.Skeleton, tooltip: "背景特效" }) bgEffect: sp.Skeleton;
- @property({ type: sp.Skeleton, tooltip: "统帅特效" }) leaderEffect: sp.Skeleton;
- @property({ type: BitmapFont, tooltip: "艺术字" }) artlabel: BitmapFont;
- public showOverHandler: Function;
- public async setData(skillID: number, heroID: number, cb: Function) {
- this.showOverHandler = cb;
- let resName = DataSystem.getData(ConfigData)["general"][heroID]["hero_res"];
- let spData = await this.res.load<sp.SkeletonData>("spine/hero/" + resName, sp.SkeletonData);
- this.leaderEffect.skeletonData = spData;
- this.leaderEffect.setAnimation(0, "run", true);
- tween(this.leaderEffect.node).to(1, { position: v3(0, 0, 0) }).call(async () => {
- this.bgEffect.setAnimation(0, "animation", false);
- this.leaderEffect.setAnimation(0, "attack", false);
- let skillName = DataSystem.getData(ConfigData)["skill"][110000 + skillID]["name"];
- let nameArray = skillName.split("");
- for (let i = 0; i < nameArray.length; i++) {
- await this.setLabel(nameArray[i]);
- }
- this.scheduleOnce(() => {
- this.onShowOver();
- }, 0.3);
- }).start();
- }
- /**设置文字 */
- private setLabel(name: string) {
- return new Promise<any>(async (resolve: (data: any) => void) => {
- this.artlabel.string += name;
- this.scheduleOnce(() => {
- resolve(null);
- }, 0.15);
- });
- }
- /**特写结束 */
- private onShowOver(): void {
- this.showOverHandler && this.showOverHandler();
- this.node.destroy();
- }
- }
|