import { _decorator, Button, Component, instantiate, Node, Prefab, sp, Sprite, Vec2, Vec3 } from 'cc'; import {Skin } from '../../script/Manager/LocalDataMgr'; import { LayerMgr } from '../../script/Manager/LayerMgr'; const { ccclass, property } = _decorator; @ccclass('SkinItem') export class SkinItem extends Component { @property(Node) skinRoot:Node = null; @property(Sprite) selectedSprite:Sprite = null; private _isSelected:boolean = false; private _key:number = 0; private _spine:sp.Skeleton = null; // init(key: number,spineData:sp.SkeletonData,animName:string = "idle",spineOffset:Vec2 = new Vec2(0,0),isSelect:boolean = false) // { // this.skin.skeletonData = spineData; // this.skin.setAnimation(0,animName,true) // this.skin.node.position = this.skin.node.position.clone().add3f(spineOffset.x,spineOffset.y,0) // this.selectedSprite.node.active = isSelect // this._isSelected = isSelect // this._key = key // } init(key: number,spine:Prefab,animName:string = "idle",spineOffset:Vec2 = new Vec2(0,0),isSelect:boolean = false) { let skin = instantiate(spine) this.skinRoot.addChild(skin) skin.setPosition(Vec3.ZERO) skin.position = skin.position.clone().add3f(spineOffset.x,spineOffset.y,0) this.selectedSprite.node.active = isSelect this._isSelected = isSelect this._key = key this._spine = skin.getComponent(sp.Skeleton) if(!this._spine.getCurrent(0)) this._spine.setAnimation(0,animName,true) } onClick() { this.setSelectSkin(!this._isSelected) } protected start(): void { this.node.on(Node.EventType.TOUCH_END,this.onClick,this) } setSelectSkin(isSelect:boolean) { this._isSelected = isSelect this.selectedSprite.node.active = this._isSelected if(this._isSelected) { Skin.addSelectSkin(this._key) }else { Skin.removeSelectSkin(this._key) } } }