Listato 2. Gestisce le cifre e la modifica delle stesse
import mx.core.UIObject;
[Event("change")]
class Display extends UIObject {
static var symbolName:String = "Display";
static var symbolOwner:Object = Display;
static var className:String = "Dispaly";
// il numero che viene richiesto
private var __numero:Number;
//il numero delle cifre che compongono il display
private var maxCifre = 6;
// indica se deve rigenerare le cifre
private var cambiaCifre:Boolean;
private var display:MovieClip;
private var boundingBox_mc:MovieClip;
private var cifre:MovieClip;
function Display() {}
[Inspectable (defaultValue=0)]
[ChangeEvent("change")]
public function get numero():Number {
return __numero;
}
public function set numero(sec:Number) {
__numero = Number(sec);
dispatchEvent({type:"change", target:this, numero:numero});
// se cambio il numero, devo aggiornare la grafica
invalidate();
}
[Inspectable (type="String",enumeration="verde,rosso,grigio", defaultValue="verde")]
public function get colore():String {
return Cifra.colore;
}
public function set colore(valore) {
Cifra.colore = valore;
cambiaCifre = true;
this.doLater(this, "size");
// se cambio il colore, devo aggiornare la grafica
invalidate();
}
function init() {
super.init();
// faccio scomparire la clip boundingBox_mc
boundingBox_mc._visible = false;
boundingBox_mc._width = 0;
boundingBox_mc._height = 0;
}
private function createChildren() {
creaCifre();
invalidate();
}
function draw() {
super.draw();
if (cambiaCifre) {
cifre.removeMovieClip();
creaCifre();
}
valutaCifre();
}
function size() {
cifre._width = __width;
cifre._height = __height;
super.size();
}
private function creaCifre() {
this.createEmptyMovieClip("cifre", 0);
for (var x = 1; x<=maxCifre; x++) {
cifre.createObject("cifra", "cifra"+(maxCifre-(x-1)), x, {_x:43.1*(x-1)});
}
cambiaCifre = false;
}
private function valutaCifre() {
var sec:String = __numero.toString();
var len:Number = sec.length;
for (var x = maxCifre; x>0; x--) {
var elem:String = sec.charAt(len-x);
cifre["cifra"+x].visualizzaNumero(elem);
}
if (numero<0) {
cifre["cifra"+len].visualizzaNumero("meno");
}
}
public function reset() {
numero = 0;
}
}