大侠
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

71 lines
2.2 KiB

import { _decorator, CCFloat, Color, Component, Material, Node, sp, Sprite } from 'cc';
const { ccclass, property ,menu} = _decorator;
@ccclass('ShimmerWhite')
@menu("树木特效/闪白")
export class ShimmerWhite extends Component {
@property(CCFloat)
duration:number = 0.25;
median:number;
time:number;
private _material:Material;
private Color:Color = new Color(255,255,255);//Color.WHITE.clone();
get material():Material{
return;
// if(!this._material){
// if (this.node.getComponent(Sprite)) {
// this._material = this.node.getComponent(Sprite).getMaterialInstance(0);
// } else {
// this.spAnim = this.node.getComponent(sp.Skeleton);
// this._material = this.spAnim.getMaterialInstance(0);
// }
// }
// return this._material;
};
spAnim:sp.Skeleton;
onLoad() {
this.time = 0;
this.median = this.duration / 2;
//this.material.setProperty("u_rate", 1);
};
onEnable() {
this.time = 0;
// this.material.setProperty("u_rate", 1);
this.Color.a = 255;
this.node.getComponent(Sprite).color = this.Color;
};
// onDisable() {
// this.time = 0;
// // this.material.setProperty("u_rate", 1);
// this.Color.a = 255;
// this.node.getComponent(Sprite).color = this.Color;
// };
show(time?:number) {
if (!time) {
time = this.duration;
}
this.duration = time;
this.time = this.duration;
this.Color.a = 0;
this.node.getComponent(Sprite).color = this.Color;
//this.material.setProperty("u_rate", 1);
};
update(dt:number) {
if (this.time > 0) {
this.time -= dt;
if (this.time < 0) {
this.time = 0;
}
var e = 1 - this.time / this.duration;
this.Color.a = e*255;
this.node.getComponent(Sprite).color = this.Color;
//this.material.setProperty("u_rate", );
// if (this.spAnim) {
// this.spAnim._updateMaterial();
// }
}
};
}