mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-28 04:28:04 +00:00
85 lines
2.7 KiB
JavaScript
85 lines
2.7 KiB
JavaScript
cc.Class({
|
|
extends: cc.Component,
|
|
|
|
properties: {
|
|
pickedUpAnimNode: {
|
|
type: cc.Node,
|
|
default: null
|
|
},
|
|
durationMillis: {
|
|
default: 0
|
|
},
|
|
binglingAnimNode: {
|
|
type: cc.Node,
|
|
default: null
|
|
},
|
|
binglingAnimDurationMillis: {
|
|
default: 0
|
|
},
|
|
scoreLabelNode: {
|
|
type: cc.Node,
|
|
default: null
|
|
}
|
|
|
|
},
|
|
|
|
|
|
setData (treasureInfo) {
|
|
const self = this;
|
|
this.score = treasureInfo.score ? treasureInfo.score : 100 ;
|
|
this.type = treasureInfo.type ? treasureInfo.type : 1;
|
|
this.scoreLabelNode.getComponent(cc.Label).string = this.score;
|
|
const spriteComponent = this.pickedUpAnimNode.getComponent(cc.Sprite);
|
|
//hardcode treasurePNG's path.
|
|
cc.loader.loadRes("textures/treasures/"+ this.type, cc.SpriteFrame, function (err, frame) {
|
|
if(err){
|
|
cc.warn(err);
|
|
return;
|
|
}
|
|
spriteComponent.spriteFrame = frame;
|
|
})
|
|
},
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
update (dt) {
|
|
const changingNode = this.pickedUpAnimNode;
|
|
const elapsedMillis = Date.now() - this.startedAtMillis;
|
|
if(elapsedMillis >= this.binglingAnimDurationMillis && null != this.binglingAnimNode && true == this.binglingAnimNode.active) {
|
|
this.binglingAnimNode.active = false;
|
|
this.startedAtMillis = Date.now();
|
|
}
|
|
if(this.binglingAnimNode.active)
|
|
return;
|
|
if (elapsedMillis > this.durationMillis) {
|
|
this.node.destroy();
|
|
return;
|
|
}
|
|
if (elapsedMillis <= this.firstDurationMillis) {
|
|
let posDiff = cc.v2(0, dt * this.yIncreaseSpeed);
|
|
changingNode.setPosition(changingNode.position.add(posDiff));
|
|
this.scoreLabelNode.setPosition(this.scoreLabelNode.position.add(posDiff));
|
|
changingNode.scale += (this.scaleIncreaseSpeed*dt);
|
|
} else {
|
|
let posDiff = cc.v2(dt * this.xIncreaseSpeed , ( -1 *dt * this.yDecreaseSpeed));
|
|
changingNode.setPosition(changingNode.position.add(posDiff));
|
|
this.scoreLabelNode.setPosition(this.scoreLabelNode.position.add(posDiff));
|
|
changingNode.opacity -= dt * this.opacityDegradeSpeed;
|
|
this.scoreLabelNode.opacity -= dt * this.opacityDegradeSpeed;
|
|
}
|
|
},
|
|
|
|
onLoad() {
|
|
this.pickedUpAnimNode.scale = 0;
|
|
this.startedAtMillis = Date.now();
|
|
|
|
this.firstDurationMillis = (0.8*this.durationMillis);
|
|
this.yIncreaseSpeed = (200 *1000/this.firstDurationMillis);
|
|
this.scaleIncreaseSpeed = (2 * 1000/this.firstDurationMillis);
|
|
|
|
this.scondDurationMillis = (0.2 * this.durationMillis );
|
|
this.opacityDegradeSpeed = (255*1000/this.scondDurationMillis);
|
|
this.yDecreaseSpeed = (30*1000/this.scondDurationMillis);
|
|
this.xIncreaseSpeed = (20*1000/this.scondDurationMillis);
|
|
}
|
|
});
|