迭代
This commit is contained in:
parent
b52fdb1385
commit
1b267ebc8e
|
@ -153,6 +153,7 @@ export default class Block extends cc.Component {
|
||||||
//计时器
|
//计时器
|
||||||
private scheduleCallback: any = null;
|
private scheduleCallback: any = null;
|
||||||
private scheduleCallback2: any = null;
|
private scheduleCallback2: any = null;
|
||||||
|
private scheduleCallback3: any = null;
|
||||||
isEliminatedByHammer: boolean = false; // 标记是否被锤子消除过
|
isEliminatedByHammer: boolean = false; // 标记是否被锤子消除过
|
||||||
|
|
||||||
onLoad() {
|
onLoad() {
|
||||||
|
@ -747,58 +748,14 @@ export default class Block extends cc.Component {
|
||||||
eliminate() {
|
eliminate() {
|
||||||
clearTimeout(this.scheduleCallback2);
|
clearTimeout(this.scheduleCallback2);
|
||||||
clearTimeout(this.scheduleCallback);
|
clearTimeout(this.scheduleCallback);
|
||||||
|
clearTimeout(this.scheduleCallback3);
|
||||||
let self = this;
|
let self = this;
|
||||||
//锤子状态消失
|
//锤子状态消失
|
||||||
MapConroler._instance.pause = true;
|
MapConroler._instance.pause = true;
|
||||||
|
|
||||||
if (MapConroler._instance.ismagic) {
|
if (MapConroler._instance.ismagic) {
|
||||||
this.scheduleCallback = setTimeout(() => {
|
this.scheduleCallback = setTimeout(() => {
|
||||||
// 记录添加magic时的锚点
|
this.createLabelsForBlocksWithCustomDelay(0.2)
|
||||||
this.node.anchorX = 0.5;
|
|
||||||
this.node.anchorY = 0.5;
|
|
||||||
this.node.addChild(new cc.Node("magic"));
|
|
||||||
let effectNode = this.node.getChildByName("magic");
|
|
||||||
effectNode.setPosition(0, 0);
|
|
||||||
|
|
||||||
// 改锚点后,修正magic的位置
|
|
||||||
|
|
||||||
this.node.anchorX = 1;
|
|
||||||
this.node.anchorY = 0;
|
|
||||||
|
|
||||||
// 重新设置magic的位置,使其视觉上不变
|
|
||||||
let parentSize = this.node.getContentSize();
|
|
||||||
effectNode.setPosition(
|
|
||||||
effectNode.x + parentSize.width * (0.5 - 1),
|
|
||||||
effectNode.y + parentSize.height * (0.5 - 0)
|
|
||||||
);
|
|
||||||
switch (this.node.name) {
|
|
||||||
case "block14":
|
|
||||||
this.node.anchorX = 0.66;
|
|
||||||
this.node.anchorY = 0;
|
|
||||||
effectNode.setPosition(-50, 120);
|
|
||||||
break;
|
|
||||||
case "block18":
|
|
||||||
this.node.anchorX = 0.66;
|
|
||||||
this.node.anchorY = 0;
|
|
||||||
effectNode.setPosition(-50, 200);
|
|
||||||
break;
|
|
||||||
case "block10":
|
|
||||||
effectNode.setPosition(0, 200);
|
|
||||||
break;
|
|
||||||
case "block21":
|
|
||||||
effectNode.setPosition(0, 130);
|
|
||||||
break;
|
|
||||||
case "block16":
|
|
||||||
effectNode.setPosition(0, 180);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
effectNode.zIndex = 1000;
|
|
||||||
effectNode.addComponent(sp.Skeleton);
|
|
||||||
effectNode.getComponent(sp.Skeleton).skeletonData = this.magic_SkeletonData;
|
|
||||||
effectNode.getComponent(sp.Skeleton).setAnimation(0, "play", false);
|
|
||||||
|
|
||||||
if (this.type == BlockType.冻结块) {
|
if (this.type == BlockType.冻结块) {
|
||||||
this.node.getChildByName("freeze").getComponent("Freeze").reduce(2);
|
this.node.getChildByName("freeze").getComponent("Freeze").reduce(2);
|
||||||
MapConroler._instance.ismagic = false;
|
MapConroler._instance.ismagic = false;
|
||||||
|
@ -829,10 +786,14 @@ export default class Block extends cc.Component {
|
||||||
this.node.getChildByName("boom").getComponent("Boom").stopBoom();
|
this.node.getChildByName("boom").getComponent("Boom").stopBoom();
|
||||||
}
|
}
|
||||||
this.scheduleCallback2 = setTimeout(() => {
|
this.scheduleCallback2 = setTimeout(() => {
|
||||||
//如果方块可以消除
|
|
||||||
|
|
||||||
MapConroler._instance.blockNum -= 1;
|
MapConroler._instance.blockNum -= 1;
|
||||||
MapConroler._instance.special_Treatment(this.node);
|
MapConroler._instance.special_Treatment(this.node);
|
||||||
|
}, 950);
|
||||||
|
this.scheduleCallback2 = setTimeout(() => {
|
||||||
|
//如果方块可以消除
|
||||||
|
|
||||||
|
// MapConroler._instance.blockNum -= 1;
|
||||||
|
// MapConroler._instance.special_Treatment(this.node);
|
||||||
var self = this;
|
var self = this;
|
||||||
this.removeMapBlock();
|
this.removeMapBlock();
|
||||||
MapConroler._instance.judgeWin(1);
|
MapConroler._instance.judgeWin(1);
|
||||||
|
@ -860,10 +821,10 @@ export default class Block extends cc.Component {
|
||||||
MapConroler._instance.failLevel("lock");
|
MapConroler._instance.failLevel("lock");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 500);
|
}, 900);
|
||||||
MapConroler._instance.ismagic = false;
|
MapConroler._instance.ismagic = false;
|
||||||
|
|
||||||
}, 950);
|
}, 1350);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1598,6 +1559,271 @@ export default class Block extends cc.Component {
|
||||||
this.node.y = this.node.y - distance;
|
this.node.y = this.node.y - distance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createSingleBlockEffect(blockPos: any, index: number, blockSize: number, baseOffset: cc.Vec2) {
|
||||||
|
const effectNode = new cc.Node(`magic_effect_${index}`);
|
||||||
|
|
||||||
|
const skeletonComponent = effectNode.addComponent(sp.Skeleton);
|
||||||
|
if (!this.magic_SkeletonData) {
|
||||||
|
console.error("magic_SkeletonData 资源未加载或为空");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
skeletonComponent.skeletonData = this.magic_SkeletonData;
|
||||||
|
skeletonComponent.premultipliedAlpha = false;
|
||||||
|
let actualX = blockPos.x * blockSize + baseOffset.x;
|
||||||
|
let actualY = blockPos.y * blockSize + baseOffset.y;
|
||||||
|
|
||||||
|
effectNode.setAnchorPoint(0.5, 0.5);
|
||||||
|
|
||||||
|
// 计算在世界坐标系中的位置
|
||||||
|
const worldPos = this.node.convertToWorldSpaceAR(cc.v2(actualX - 65, actualY + 70));
|
||||||
|
|
||||||
|
// 获取 Canvas 节点
|
||||||
|
const canvas = cc.find('Canvas');
|
||||||
|
if (!canvas) {
|
||||||
|
console.error("找不到 Canvas 节点");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将世界坐标转换为 Canvas 的本地坐标
|
||||||
|
const canvasPos = canvas.convertToNodeSpaceAR(worldPos);
|
||||||
|
effectNode.setPosition(canvasPos);
|
||||||
|
|
||||||
|
// 设置最高层级,确保在所有其他节点之上
|
||||||
|
effectNode.zIndex = 9999;
|
||||||
|
|
||||||
|
// 添加到 Canvas 节点下
|
||||||
|
canvas.addChild(effectNode);
|
||||||
|
|
||||||
|
this.playMagicAnimation(skeletonComponent, index);
|
||||||
|
|
||||||
|
// 可选:添加自动清理机制
|
||||||
|
this.scheduleOnce(() => {
|
||||||
|
if (effectNode && effectNode.isValid) {
|
||||||
|
effectNode.removeFromParent();
|
||||||
|
effectNode.destroy();
|
||||||
|
}
|
||||||
|
}, 3); // 3秒后自动清理
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 播放魔法动画的辅助方法
|
||||||
|
playMagicAnimation(skeletonComponent: sp.Skeleton, index: number) {
|
||||||
|
try {
|
||||||
|
// 检查动画是否存在
|
||||||
|
if (!skeletonComponent.findAnimation("play")) {
|
||||||
|
console.error(`动画 "play" 不存在于 Spine 资源中`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
skeletonComponent.setAnimation(0, "play", false);
|
||||||
|
//播放完自动清理
|
||||||
|
// 监听动画完成事件
|
||||||
|
skeletonComponent.setCompleteListener((trackEntry, loopCount) => {
|
||||||
|
// 动画播放完成后自动清理节点
|
||||||
|
if (skeletonComponent.node && skeletonComponent.node.isValid) {
|
||||||
|
console.log(`第 ${index} 个特效动画播放完成,开始清理节点`);
|
||||||
|
|
||||||
|
// 移除节点并销毁
|
||||||
|
skeletonComponent.node.removeFromParent();
|
||||||
|
skeletonComponent.node.destroy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`播放第 ${index} 个方块动画时出错:`, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理
|
||||||
|
clearPreviousEffects() {
|
||||||
|
const children = this.node.children;
|
||||||
|
for (let i = children.length - 1; i >= 0; i--) {
|
||||||
|
const child = children[i];
|
||||||
|
if (child.name.startsWith('magic_effect_')) {
|
||||||
|
child.removeFromParent();
|
||||||
|
child.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
createLabelsForBlocksWithCustomDelay(delayBetweenBlocks: number = 0.1) {
|
||||||
|
if (!this.allBlocks || this.allBlocks.length === 0) {
|
||||||
|
console.warn("allBlocks 数组为空或未定义");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const blockSize = 120;
|
||||||
|
const baseOffset = cc.v2(0, 0);
|
||||||
|
this.clearPreviousEffects();
|
||||||
|
let createOrder = [
|
||||||
|
[0],
|
||||||
|
];
|
||||||
|
|
||||||
|
switch (this.node.name) {
|
||||||
|
case "block0":
|
||||||
|
createOrder = [
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block1":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block2":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block3":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block4":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block5":
|
||||||
|
createOrder = [
|
||||||
|
[0],
|
||||||
|
[1, 3],
|
||||||
|
[2]
|
||||||
|
];
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "block6":
|
||||||
|
createOrder = [
|
||||||
|
[2],
|
||||||
|
[1, 3],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block7":
|
||||||
|
createOrder = [
|
||||||
|
[2],
|
||||||
|
[1, 3],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block8":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2],
|
||||||
|
[3]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block9":
|
||||||
|
createOrder = [
|
||||||
|
[0],
|
||||||
|
[1, 3],
|
||||||
|
[2]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block10":
|
||||||
|
createOrder = [
|
||||||
|
[3],
|
||||||
|
[1, 2],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block11":
|
||||||
|
createOrder = [
|
||||||
|
[3],
|
||||||
|
[0, 2],
|
||||||
|
[1]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block12":
|
||||||
|
createOrder = [
|
||||||
|
[0],
|
||||||
|
[1, 3],
|
||||||
|
[2]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block13":
|
||||||
|
createOrder = [
|
||||||
|
[2],
|
||||||
|
[1, 3],
|
||||||
|
[0]
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block14":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2, 3],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block15":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2, 3],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block16":
|
||||||
|
createOrder = [
|
||||||
|
[2],
|
||||||
|
[0, 1, 3],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block17":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2, 3],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block18":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[0, 2, 3, 4],
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block19":
|
||||||
|
createOrder = [
|
||||||
|
[0],
|
||||||
|
[1, 2],
|
||||||
|
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block20":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[2, 0],
|
||||||
|
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block21":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[2, 0],
|
||||||
|
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "block22":
|
||||||
|
createOrder = [
|
||||||
|
[1],
|
||||||
|
[2, 0],
|
||||||
|
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let currentDelay = 0;
|
||||||
|
createOrder.forEach((batch, batchIndex) => {
|
||||||
|
batch.forEach(blockIndex => {
|
||||||
|
if (blockIndex < this.allBlocks.length) {
|
||||||
|
const blockPos = this.allBlocks[blockIndex];
|
||||||
|
this.scheduleOnce(() => {
|
||||||
|
this.createSingleBlockEffect(blockPos, blockIndex, blockSize, baseOffset);
|
||||||
|
}, currentDelay);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
currentDelay += delayBetweenBlocks;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,7 @@ export default class JiaZai extends cc.Component {
|
||||||
@property(cc.Node)
|
@property(cc.Node)
|
||||||
setUi: cc.Node = null;
|
setUi: cc.Node = null;
|
||||||
scheduleCallback2: any;
|
scheduleCallback2: any;
|
||||||
|
private isFirstLaunch: boolean = true; // 添加首次启动标志
|
||||||
// //月卡
|
// //月卡
|
||||||
// @property(cc.Node)
|
// @property(cc.Node)
|
||||||
// monthCardBtn: cc.Node = null;
|
// monthCardBtn: cc.Node = null;
|
||||||
|
@ -172,7 +173,46 @@ export default class JiaZai extends cc.Component {
|
||||||
//console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen);
|
//console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen);
|
||||||
AudioManager._instance.playMusicGame();
|
AudioManager._instance.playMusicGame();
|
||||||
// this.openMonthCard();
|
// this.openMonthCard();
|
||||||
|
if (typeof wx !== 'undefined') {
|
||||||
|
wx.onShow(() => {
|
||||||
|
// 只有非首次启动时才调用 onGameShow
|
||||||
|
if (!this.isFirstLaunch) {
|
||||||
|
this.onGameShow();
|
||||||
|
}
|
||||||
|
// 标记首次启动已完成
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
wx.onHide(() => {
|
||||||
|
this.onGameHide();
|
||||||
|
this.isFirstLaunch = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onGameHide() {
|
||||||
|
console.log("执行onGameHide", cc.fx.GameConfig.GM_INFO.min_Time);
|
||||||
|
this.stopHeathTimeCutDown();
|
||||||
|
this.stopTimeCutDown();
|
||||||
|
this.stopPowerTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
onGameShow() {
|
||||||
|
|
||||||
|
cc.fx.GameTool.getHealth((data) => {
|
||||||
|
NumberToImage.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 43, 15, "level_", this.level, true);
|
||||||
|
NumberToImage.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", this.coin, true);
|
||||||
|
this.setHealthInfo(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("执行on", cc.fx.GameConfig.GM_INFO.min_Time);
|
||||||
|
if (this.node.getChildByName("heathpop") && this.node.getChildByName("heathpop").active == true) {
|
||||||
|
const heathComponent = this.node.getChildByName("heathpop").getComponent("heathnum");
|
||||||
|
if (heathComponent && heathComponent.timeNode &&
|
||||||
|
cc.fx.GameConfig.GM_INFO.hp < cc.fx.GameConfig.GM_INFO.hp_Max) {
|
||||||
|
this.startHeathTimeCutDown(heathComponent.timeNode);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
|
@ -232,6 +272,7 @@ export default class JiaZai extends cc.Component {
|
||||||
let heathPop = health.getComponent("heathnum").heatht;
|
let heathPop = health.getComponent("heathnum").heatht;
|
||||||
heathPop.scale = 0.7;
|
heathPop.scale = 0.7;
|
||||||
this.heath = heathPop; // 保存heath预制体引用
|
this.heath = heathPop; // 保存heath预制体引用
|
||||||
|
console.log("Health:", this.node.children)
|
||||||
let swichs = health.getComponent("heathnum").switchNode;
|
let swichs = health.getComponent("heathnum").switchNode;
|
||||||
let timeNode = health.getComponent("heathnum").timeNode;
|
let timeNode = health.getComponent("heathnum").timeNode;
|
||||||
let switchButtons = health.getComponent("heathnum").switchButtons;
|
let switchButtons = health.getComponent("heathnum").switchButtons;
|
||||||
|
@ -753,7 +794,6 @@ export default class JiaZai extends cc.Component {
|
||||||
closeLoad() {
|
closeLoad() {
|
||||||
this.node.getChildByName("Loading").active = false;
|
this.node.getChildByName("Loading").active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePower() {
|
updatePower() {
|
||||||
if (cc.fx.GameConfig.GM_INFO.userPowerTime != 0) {
|
if (cc.fx.GameConfig.GM_INFO.userPowerTime != 0) {
|
||||||
let nowTime = Math.floor(Date.now() / 1000);
|
let nowTime = Math.floor(Date.now() / 1000);
|
||||||
|
|
|
@ -1778,8 +1778,9 @@ export default class MapConroler extends cc.Component {
|
||||||
if (data.type == "time") {
|
if (data.type == "time") {
|
||||||
this.timeNumber = 21;
|
this.timeNumber = 21;
|
||||||
this.add_Time += 20;
|
this.add_Time += 20;
|
||||||
|
NumberToImage.getTimeMargin(20, 50, "time_", this.timeLabel)
|
||||||
}
|
}
|
||||||
// NumberToImage.getTimeMargin(20, 50, "time_", this.timeLabel)
|
|
||||||
this.blockNum = this.blocks.length;
|
this.blockNum = this.blocks.length;
|
||||||
if (this.blockNum == 0) this.nextLevel();
|
if (this.blockNum == 0) this.nextLevel();
|
||||||
|
|
||||||
|
|
|
@ -824,7 +824,7 @@
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
"width": 1080,
|
"width": 1080,
|
||||||
"height": 1700
|
"height": 1900
|
||||||
},
|
},
|
||||||
"_anchorPoint": {
|
"_anchorPoint": {
|
||||||
"__type__": "cc.Vec2",
|
"__type__": "cc.Vec2",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user