375 lines
15 KiB
JavaScript
375 lines
15 KiB
JavaScript
var CardSprite = require("CardSprite");
|
|
var GameConfig = require("GameConfig");
|
|
var GameTools = require("GameTools");
|
|
var GameUiTools = require("GameUiTools");
|
|
var DEVICE_WIDTH = GameConfig.DEVICE_WIDTH;
|
|
var DEVICE_HEIGHT = GameConfig.DEVICE_HEIGHT;
|
|
var MoveButtonAnimType = {
|
|
up: 0,//向上
|
|
down: 1,//向下
|
|
left: 2,//向左
|
|
right: 3,//向右
|
|
leftUp: 4,//左上
|
|
leftDown: 5,//左下
|
|
rightUp: 6,//右上
|
|
rightDown: 7,//右下
|
|
};
|
|
var AnimLayerTool = {
|
|
moveButtonAnimTime: 0.3,// 按钮动画移动时间
|
|
MoveButtonAnimType: MoveButtonAnimType,
|
|
bottonAnim: function (button) {// 创建按钮特效
|
|
let arrayNode = new Array();
|
|
if (button.length == undefined) {
|
|
arrayNode[0] = button;
|
|
} else {
|
|
arrayNode = button;
|
|
}
|
|
for (let i = 0; i < arrayNode.length; i++) {
|
|
// let time = cc.random0To1() * 5 + 1;
|
|
let time = Math.random() * 5 + 1;
|
|
let width = arrayNode[i].height / 20.0;
|
|
let anim1 = cc.jumpBy(time, cc.v2(width, 0), width, 1);
|
|
let anim2 = cc.jumpBy(time, cc.v2(-width, 0), -width, 1);
|
|
let anim3 = cc.scaleBy(0.3, 1.1, 0.9);
|
|
let anim4 = cc.delayTime(time);
|
|
let actions = cc.sequence(anim1, anim2, anim3, anim3.reverse(), anim4);
|
|
arrayNode[i].runAction(actions.repeatForever());
|
|
}
|
|
},
|
|
createShowMessageBox(x, y, name, rotation, parentNode) {
|
|
},
|
|
createShowMessageBoxAward(parentNode, engineType) //创建奖励消息提示框
|
|
{
|
|
let message = new cc.Node();
|
|
if (engineType == -1) {
|
|
// message.addComponent(cc.Sprite).spriteFrame = GameTools.love2048FrameCache.getSpriteFrame("toast6");
|
|
} else if (engineType < 6) {
|
|
return;
|
|
} else if (engineType < 8) {
|
|
GameUiTools.getSpriteFrame("pop_nopack/txt_good", message.addComponent(cc.Sprite));
|
|
} else if (engineType < 10) {
|
|
GameUiTools.getSpriteFrame("pop_nopack/txt_cool",message.addComponent(cc.Sprite));
|
|
} else if (engineType < 12) {
|
|
GameUiTools.getSpriteFrame("pop_nopack/txt_verygood", message.addComponent(cc.Sprite));
|
|
} else if (engineType < 14) {
|
|
GameUiTools.getSpriteFrame("pop_nopack/txt_smart", message.addComponent(cc.Sprite));
|
|
} else {
|
|
GameUiTools.getSpriteFrame("pop_nopack/txt_boom", message.addComponent(cc.Sprite));
|
|
}
|
|
GameTools.playSimpleAudioEngine(3);
|
|
message.setPosition(0, 0);
|
|
// message.setOpacity(0);
|
|
message.opacity = 0;
|
|
parentNode.addChild(message);
|
|
|
|
let action1 = cc.fadeIn(0.5);
|
|
let action2 = cc.delayTime(1);
|
|
let action3 = cc.fadeOut(0.5);
|
|
let moveFinish = cc.callFunc(this.callFuncAddScore, this, message);
|
|
let action4 = cc.sequence(action1, action2, action3, moveFinish);
|
|
message.runAction(action4);
|
|
},
|
|
moveButtonAnim: function (button, isShow, moveButtonAnimType) {// 按钮消失或出现动画
|
|
let positionX = button.x;
|
|
let positionY = button.y;
|
|
let size = button.getContentSize();
|
|
if (isShow) {
|
|
switch (moveButtonAnimType) {
|
|
case 0:// up:
|
|
button.setPosition(positionX, DEVICE_HEIGHT + size.height);
|
|
break;
|
|
case 1:// down:
|
|
button.setPosition(positionX, -size.height);
|
|
break;
|
|
case 2:// left:
|
|
button.setPosition(-size.width, positionY);
|
|
break;
|
|
case 3:// right:
|
|
button.setPosition(DEVICE_WIDTH + size.width, positionY);
|
|
break;
|
|
case 4:// leftUp:
|
|
button.setPosition(-size.width, DEVICE_HEIGHT + size.height);
|
|
break;
|
|
case 5:// leftDown:
|
|
button.setPosition(-size.width, -size.height);
|
|
break;
|
|
case 6:// rightUp:
|
|
button.setPosition(DEVICE_WIDTH + size.width, DEVICE_HEIGHT + size.height);
|
|
break;
|
|
case 7:// rightDown:
|
|
button.setPosition(DEVICE_WIDTH + size.width, -size.height);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
let anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(positionX, positionY));
|
|
button.runAction(anim1);
|
|
}
|
|
else {
|
|
let anim1;
|
|
switch (moveButtonAnimType) {
|
|
case 0:// up:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(positionX, DEVICE_HEIGHT + size.height));
|
|
break;
|
|
case 1:// down:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(positionX, -size.height));
|
|
break;
|
|
case 2:// left:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(-size.width, positionY));
|
|
break;
|
|
case 3:// right:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(DEVICE_WIDTH + size.width, positionY));
|
|
break;
|
|
case 4:// leftUp:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(-size.width, DEVICE_HEIGHT + size.height));
|
|
break;
|
|
case 5:// leftDown:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(-size.width, -size.height));
|
|
break;
|
|
case 6:// rightUp:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(DEVICE_WIDTH + size.width, DEVICE_HEIGHT + size.height));
|
|
break;
|
|
case 7:// rightDown:
|
|
anim1 = cc.moveTo(this.moveButtonAnimTime, cc.v2(DEVICE_WIDTH + size.width, -size.height));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
button.runAction(anim1);
|
|
}
|
|
},
|
|
|
|
createAddScore(addScore) //创建加分动画
|
|
{
|
|
let addScoreSprite = new cc.Node();
|
|
let lable = addScoreSprite.addComponent(cc.Label);
|
|
lable.font = GameTools.numberLabelAtlas;
|
|
lable.string = ":" + addScore;
|
|
addScoreSprite.setPosition(-46, 505);
|
|
// addScoreSprite.setOpacity(100);
|
|
addScoreSprite.opacity = 0;
|
|
GameConfig.GameScene.node.addChild(addScoreSprite);
|
|
let move1 = cc.moveBy(0.3, 0, 106);
|
|
let move2 = cc.fadeIn(0.2);
|
|
let move3 = cc.spawn(move1, move2);
|
|
let moveFinish = cc.callFunc(this.callFuncAddScore, this, addScoreSprite);
|
|
addScoreSprite.runAction(cc.sequence(move3, moveFinish));
|
|
},
|
|
callFuncAddScore(sender, node) //创建加分动画监听
|
|
{
|
|
sender.destroy();
|
|
},
|
|
createScoreMoveAnim: function (from, score, scoreType) { //创建得分移动动画
|
|
if (score > 0) {
|
|
let scoreNumberTTF = new cc.Node();
|
|
let lable = scoreNumberTTF.addComponent(cc.Label);
|
|
lable.font = GameTools.numberLabelAtlas;
|
|
lable.string = ":" + score;
|
|
scoreNumberTTF.setPosition(from.x, from.y);
|
|
from.getParent().addChild(scoreNumberTTF);
|
|
let moveFinish = cc.callFunc(this.callFuncScoreMoveAnim, this, scoreNumberTTF);
|
|
let move1 = null;
|
|
if (scoreType) {
|
|
move1 = cc.moveTo(1, 58 + 360, 408 + 640);
|
|
} else {
|
|
move1 = cc.moveTo(1, -259 + 360, 290 + 640);
|
|
}
|
|
move1.easing(cc.easeExponentialIn());
|
|
scoreNumberTTF.runAction(cc.sequence(move1, moveFinish));
|
|
}
|
|
},
|
|
callFuncScoreMoveAnim: function (sender, scoreNumberTTF) { //得分移动动画监听
|
|
GameConfig.GameLogic.setScore();
|
|
scoreNumberTTF.destroy();
|
|
},
|
|
|
|
createChangeCardNumAnim: function (card, num) //创建移除动画
|
|
{
|
|
let cardSprite = CardSprite.createCardSprite(card.getNumber(), card.getPositionX(), card.getPositionY());
|
|
card.getParent().addChild(cardSprite);
|
|
card.active = false;
|
|
card.setNumber(num);
|
|
cardSprite.setNumber(num);
|
|
|
|
let action2 = cc.scaleTo(0.3, 0);
|
|
action2.easing(cc.easeBackIn())
|
|
let action3 = cc.scaleTo(0.1, 1);
|
|
let moveFinish1 = cc.callFunc(this.callFuncChangeCardNum1, this, cardSprite);
|
|
let moveFinish2 = cc.callFunc(this.callFuncChangeCardNum2, this, [cardSprite, card]);
|
|
let actions = cc.sequence(action2, moveFinish1, action3, moveFinish2);
|
|
cardSprite.runAction(actions);
|
|
},
|
|
callFuncChangeCardNum1: function (sender, cardSprite) //卡片移除特效监听
|
|
{
|
|
cardSprite.CardShow();
|
|
},
|
|
callFuncChangeCardNum2: function (sender, funData) //卡片移除特效监听
|
|
{
|
|
let cardSprite = funData[0];
|
|
let card = funData[1];
|
|
card.CardShow();
|
|
card.active = true;
|
|
cardSprite.destroy();
|
|
},
|
|
createExchangeCardAnim: function (card, z, x) //创建道具交换特效
|
|
{
|
|
let X = card.getPositionX();
|
|
let Y = card.getPositionY();
|
|
let unitSize = GameConfig.CARD_WIDTH / (GameConfig.CAED_LINES + 1);
|
|
let move1 = cc.scaleBy(0.4, 1.15);
|
|
let actions = cc.sequence(move1, move1.reverse());
|
|
if (z > 0) {
|
|
let card1 = CardSprite.createCardSprite(-1, X - unitSize - GameConfig.CARD_WIDTH, Y);
|
|
card.getParent().addChild(card1);
|
|
card1.runAction(actions.clone().repeatForever());
|
|
}
|
|
if (z < GameConfig.CAED_LINES - 1) {
|
|
let card2 = CardSprite.createCardSprite(-1, X + unitSize + GameConfig.CARD_WIDTH, Y);
|
|
card.getParent().addChild(card2);
|
|
card2.runAction(actions.clone().repeatForever());
|
|
}
|
|
if (x > 0) {
|
|
let card3 = CardSprite.createCardSprite(-1, X, Y - unitSize - GameConfig.CARD_WIDTH);
|
|
card.getParent().addChild(card3);
|
|
card3.runAction(actions.clone().repeatForever());
|
|
}
|
|
if (x < GameConfig.CAED_LINES - 1) {
|
|
let card4 = CardSprite.createCardSprite(-1, X, Y + unitSize + GameConfig.CARD_WIDTH);
|
|
card.getParent().addChild(card4);
|
|
card4.runAction(actions.clone().repeatForever());
|
|
}
|
|
},
|
|
|
|
createRemoveExchangeCardAnim: function (card, z, x) //创建道具移除交换特效
|
|
{
|
|
if (z > 0) {
|
|
card.getParent().removeChildByTag(2001);
|
|
}
|
|
if (z < GameConfig.CAED_LINES - 1) {
|
|
card.getParent().removeChildByTag(2002);
|
|
}
|
|
if (x > 0) {
|
|
card.getParent().removeChildByTag(2003);
|
|
}
|
|
if (x < GameConfig.CAED_LINES - 1) {
|
|
card.getParent().removeChildByTag(2004);
|
|
}
|
|
},
|
|
|
|
createScaleToCard: function (card) {// 创建卡片初始化动画
|
|
let cardSprite = CardSprite.createCardSprite(card.number, card.x, card.y);
|
|
card.getParent().addChild(cardSprite);
|
|
card.active = false;
|
|
cardSprite.setScale(0);
|
|
let action2 = cc.scaleTo(0.3, 1);
|
|
action2.easing(cc.easeBackOut());
|
|
let moveFinish = cc.callFunc(this.callFuncCard1, this, [cardSprite, card]);
|
|
cardSprite.runAction(cc.sequence(action2, moveFinish));
|
|
},
|
|
callFuncCard1: function (node, cardSprite) {
|
|
cardSprite[1].CardShow();
|
|
cardSprite[1].active = true
|
|
cardSprite[0].destroy();
|
|
},
|
|
|
|
createMoveAnim: function (from, to, isShowAnim) {
|
|
let cardSprite = CardSprite.createCardSprite(from.number, from.x, from.y);
|
|
to.getParent().addChild(cardSprite);
|
|
let i = 0;
|
|
let moveFinish = cc.callFunc(this.callFuncCard2, this, [cardSprite, to, isShowAnim]);
|
|
let move1 = cc.moveTo(0.3, cc.v2(to.x, to.y));
|
|
if (i < 1) {
|
|
move1 = cc.moveTo(0.1, cc.v2(to.x, to.y));
|
|
} else if (i < 2) {
|
|
move1.easing(cc.easeBackIn());
|
|
} else if (i < 3) {
|
|
move1.easing(cc.easeBackOut());
|
|
} else if (i < 4) {
|
|
move1.easing(cc.easeBackInOut());
|
|
} else if (i < 5) {
|
|
move1 = cc.jumpTo(0.3, cc.v2(to.x, to.y), GameConfig.CARD_WIDTH, 2);
|
|
}
|
|
cardSprite.runAction(cc.sequence(move1, moveFinish));
|
|
},
|
|
callFuncCard2: function (sender, to) {
|
|
to[1].CardShow();
|
|
if (to[2]) {
|
|
to[0].number = to[1].number;
|
|
to[0].CardShow();
|
|
let scale = cc.scaleBy(0.02, 1.15);
|
|
let moveFinish = cc.callFunc(this.callFuncCard3, this, to[0]);
|
|
to[0].runAction(cc.sequence(scale, scale.reverse(), moveFinish));
|
|
}
|
|
else {
|
|
to[0].destroy();
|
|
}
|
|
},
|
|
callFuncCard3: function (sender, card) {
|
|
card.destroy();
|
|
},
|
|
createPopStarAnim(from, dTime) //创建卡片爆炸特效
|
|
{
|
|
let moveFinish2 = cc.callFunc(this.callFuncPopStarAnim, this, from);
|
|
// from.runAction(cc.sequence(cc.delayTime(dTime), moveFinish2, cc.hide()));
|
|
from.runAction(cc.sequence(cc.delayTime(dTime), moveFinish2, cc.fadeOut()));
|
|
},
|
|
callFuncPopStarAnim(sender, from) //卡片爆炸特效监听
|
|
{
|
|
GameTools.playSimpleAudioEngine(0);
|
|
let emitterNode = new cc.Node();
|
|
emitterNode.setPosition(from.getPosition());
|
|
let move_emitter = emitterNode.addComponent(cc.ParticleSystem);
|
|
// let move_emitter = ParticleExplosion.createWithTotalParticles(30);
|
|
// let move_emitter = new cc.ParticleSystem(30);
|
|
switch (from.getNumber()) {
|
|
// case 2:
|
|
// move_emitter.texture = "res/raw-assets/resources/particals/noe/partical_tex_yellow";
|
|
// break;
|
|
// case 4:
|
|
// move_emitter.texture = "res/raw-assets/resources/particals/noe/partical_tex_blue";
|
|
// break;
|
|
// case 8:
|
|
// move_emitter.texture = "res/raw-assets/resources/particals/noe/partical_tex_green";
|
|
// break;
|
|
// case 16:
|
|
// move_emitter.texture = "res/raw-assets/resources/particals/noe/partical_tex_red";
|
|
// break;
|
|
// case 32:
|
|
// move_emitter.texture = "res/raw-assets/resources/particals/noe/partical_tex_purple";
|
|
// break;
|
|
case 2:
|
|
move_emitter.texture = "pop_game/n6";
|
|
break;
|
|
case 4:
|
|
move_emitter.texture = "pop_game/n6";
|
|
break;
|
|
case 8:
|
|
move_emitter.texture = "pop_game/n6";
|
|
break;
|
|
case 16:
|
|
move_emitter.texture = "pop_game/n6";
|
|
break;
|
|
case 32:
|
|
move_emitter.texture = "pop_game/n6";
|
|
break;
|
|
|
|
}
|
|
move_emitter.startColor = cc.color(255, 255, 255, 255);
|
|
move_emitter.startColorVar = cc.color(0, 0, 0, 0);
|
|
move_emitter.endColorVar = cc.color(0, 0, 0, 0);
|
|
move_emitter.endColor = move_emitter.startColor;
|
|
move_emitter.autoRemoveOnFinish = true;
|
|
|
|
move_emitter.duration = 0.1;
|
|
move_emitter.emissionRate = 100;
|
|
move_emitter.life = 2;
|
|
move_emitter.lifeVar = 0.5;
|
|
move_emitter.angle = 90;
|
|
move_emitter.angleVar = 360;
|
|
move_emitter.custom = true;
|
|
move_emitter.playOnLoad = true;
|
|
from.getParent().addChild(emitterNode);
|
|
},
|
|
};
|
|
|
|
module.exports = AnimLayerTool; |