86 lines
2.7 KiB
TypeScript
86 lines
2.7 KiB
TypeScript
// 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 MapConroler from "../Map";
|
|
import NumberToImage from "../NumberToImage";
|
|
|
|
const { ccclass, property } = cc._decorator;
|
|
|
|
|
|
|
|
@ccclass
|
|
export default class Adhesive extends cc.Component {
|
|
static _instance: any;
|
|
time: number = 60;
|
|
lockTime: number = 0;
|
|
pos: any = { x: 0, y: 0 };
|
|
target: any;
|
|
|
|
onLoad() {
|
|
this.pos.x = this.pos.y = 0;
|
|
this.lockTime = -1;
|
|
this.target = null;
|
|
}
|
|
|
|
start() {
|
|
}
|
|
|
|
init(node, lockTime) {
|
|
this.pos.x = node.x - this.node.x;
|
|
this.pos.y = node.y - this.node.y;
|
|
this.target = node;
|
|
this.lockTime = lockTime;
|
|
if (this.lockTime > 0) {
|
|
NumberToImage.numberToImageNodes(this.lockTime, 20, 8, "time_", this.node.getChildByName("heng").getChildByName("num"), false);
|
|
NumberToImage.numberToImageNodes(this.lockTime, 20, 8, "time_", this.node.getChildByName("shu").getChildByName("num"), false);
|
|
}
|
|
}
|
|
|
|
remove() {
|
|
this.target = null;
|
|
for (let j = 0; j < this.node.children.length; j++) {
|
|
if (this.node.children[j].active == true) {
|
|
this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false);
|
|
}
|
|
}
|
|
if (this.lockTime != -1) {
|
|
cc.tween(this.node.getChildByName("heng").getChildByName("num"))
|
|
.to(0.2, { opacity: 0 })
|
|
.start();
|
|
cc.tween(this.node.getChildByName("shu").getChildByName("num"))
|
|
.to(0.2, { opacity: 0 })
|
|
.start();
|
|
}
|
|
|
|
|
|
setTimeout(() => {
|
|
this.node.active = false;
|
|
this.node.removeFromParent();
|
|
this.node = null;
|
|
}, 2000);
|
|
}
|
|
|
|
reduce() {
|
|
if (this.lockTime > 0 && this.target != null && this.node.active == true) {
|
|
this.lockTime--;
|
|
NumberToImage.numberToImageNodes(this.lockTime, 20, 8, "time_", this.node.getChildByName("heng").getChildByName("num"), false);
|
|
NumberToImage.numberToImageNodes(this.lockTime, 20, 8, "time_", this.node.getChildByName("shu").getChildByName("num"), false);
|
|
if (this.lockTime == 0) {
|
|
this.target.getComponent("Block").removeSpecailAdhesive(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
update(dt) {
|
|
if (this.target != null) {
|
|
this.node.x = this.target.x - this.pos.x;
|
|
this.node.y = this.target.y - this.pos.y;
|
|
}
|
|
}
|
|
}
|