webxoss-client/CardButton.js
2016-10-23 13:47:38 +08:00

95 lines
No EOL
2.4 KiB
JavaScript

'use strict';
function CardButton (card,onclick) {
createjs.Container.prototype.initialize.call(this);
this.changed = true;
this.selected = false;
this.disabled = false;
this.hovered = false;
this.order = 0;
var img = card.game.imageManager.getImageByCid(card.cid);
this.bitmap = new CardBitmap(card.cid,img);
this.width = Card.WIDTH*2;
this.height = Card.HEIGHT*2;
this.bitmap.setWidthHeight(this.width,this.height);
this.addChild(this.bitmap);
this.maskLayer = new createjs.Shape();
this.orderLayer = new createjs.Text();
this.addChild(this.maskLayer,this.orderLayer);
this.orderLayer.font = "70px 'Segoe UI', Arial, 'Microsoft Yahei', Simsun, sans-serif'";
this.orderLayer.textBaseline = "middle";
this.orderLayer.textAlign = 'center';
this.orderLayer.x = this.width/2;
this.orderLayer.y = this.height/2;
this.on('click',onclick);
this.on('mouseover',this.onmouseover);
this.on('mouseout',this.onmouseout);
}
CardButton.prototype = new createjs.Container();
CardButton.prototype.constructor = CardButton;
CardButton.prototype.onmouseover = function (event) {
if (this.hovered) return;
this.hovered = true;
this.changed = true;
};
CardButton.prototype.onmouseout = function (event) {
if (!this.hovered) return;
this.hovered = false;
this.changed = true;
};
CardButton.prototype.setOrder = function (order) {
if (this.order === order) return;
this.order = order;
this.changed = true;
};
CardButton.prototype.disable = function () {
if (this.disabled) return;
this.disabled = true;
this.changed = true;
};
CardButton.prototype.enable = function () {
if (!this.disabled) return;
this.disabled = false;
this.changed = true;
};
CardButton.prototype.update = function () {
if (this.bitmap.update()) this.changed = true;
if (!this.changed) return false;
this.changed = false;
this.maskLayer.graphics.clear();
if (this.order) {
this.orderLayer.visible = true;
this.orderLayer.text = this.order;
} else {
this.orderLayer.visible = false;
}
if (this.selected) {
this.maskLayer.graphics
.beginFill('rgba(255,255,255,0.5)')
.drawRect(0,0,this.width,this.height);
} else if (this.disabled) {
this.maskLayer.graphics
.beginFill('rgba(0,0,0,0.5)')
.drawRect(0,0,this.width,this.height);
} else if (this.hovered) {
this.maskLayer.graphics
.beginFill('rgba(255,255,255,0.1)')
.drawRect(0,0,this.width,this.height);
} else {
this.maskLayer.graphics.clear();
}
return true;
};