Sun_moves/assets/Script/tool/Shake.js
2024-05-28 11:38:16 +08:00

46 lines
1.3 KiB
JavaScript

/**
* 自定义抖动效果
*/
var Shake = cc.Class({
extends: cc.Component,
properties: {
//抖动时间
duration: 0,
//X轴抖动范围
shakeX: 0,
shakeY: 0,
},
shake: function (callback) {
if(this.shaking){
return;
}
this.callback = callback;
this.shaking = true;
this.dtCost = 0;
this.nodeInitialPos = this.node.getPosition();
this.unschedule(this.doSchedule);
this.schedule(this.doSchedule, 0, cc.macro.REPEAT_FOREVER, 0);
},
doSchedule: function (dt) {
var dt2 = dt * 50;
var randX = this.getRandomStrength(-this.shakeX, this.shakeX) * dt2;
var randY = this.getRandomStrength(-this.shakeY, this.shakeY) * dt2;
this.node.setPosition(cc.pAdd(this.nodeInitialPos, cc.v2(randX, randY)));
this.dtCost += dt;
if (this.dtCost >= this.duration) {
this.unschedule(this.doSchedule);
this.node.setPosition(this.nodeInitialPos);
this.shaking = false;
if(this.callback){
this.callback();
}
}
},
//获取两个数间的随机值
getRandomStrength: function (min, max) {
return Math.random() * (max - min + 1) + min;
},
});