SkinPreviewBall.ts 2.3 KB
// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

import { tMgr } from "../Global";
import { TableName, BallSkinTable, GamePlayTable } from "../kernel/table/TableDefine";
import { UIBase } from "../ui/UIBase";

const { ccclass, property } = cc._decorator;

@ccclass
export default class SkinPreviewBall extends UIBase {

    private _skinId: number = 0;

    //#region lifecycle 

    //#endregion

    //#region public method

    setSkin(id: number): void {

        this._skinId = id

        let config = tMgr.getConfig(TableName.BALL_SKIN, this._skinId) as BallSkinTable;

        let bindNode = this.node;

        cc.resources.load('battle/' + config.Img, cc.SpriteFrame, (error, asset) => {

            if (!error) {

                let img = bindNode.getChildByName('img');
                img.getComponent(cc.Sprite).spriteFrame = asset as cc.SpriteFrame;
                img.scale = (tMgr.getConfig(TableName.GAME_PLAY, 15 + config.Size) as GamePlayTable).Value / 100;

            }
        })

    }

    //#endregion

    //#region event

    onBeginContact(contact: cc.PhysicsContact, selfCollider: cc.Collider, otherCollider: cc.Collider) {

        let points = contact.getWorldManifold().points;

        if (points.length > 0) {
            let p = points[0];



            let pos = this.node.parent.convertToNodeSpaceAR(p);

            let parNode = this.node.parent.getChildByName('particle');
            parNode.setPosition(pos);

            let skinConfig = tMgr.getConfig(TableName.BALL_SKIN, this._skinId) as BallSkinTable;
            cc.resources.load('battle/' + skinConfig.Particle, cc.SpriteFrame, (error, asset) => {
                if (!error) {
                    parNode.active = true;
                    parNode.getComponent(cc.ParticleSystem).custom = true;
                    parNode.getComponent(cc.ParticleSystem).spriteFrame = asset as cc.SpriteFrame;
                    parNode.getComponent(cc.ParticleSystem).resetSystem();

                }
            })
        }
    }

    //#endregion

    //#region private method

    //#endregion
}