Este prototipo dibuja rectángulos por medio de la API de dibujo de flash. Muy completo, permite especificar incluso la redondez de las esquinas.
Lo lamento pero no sé de dónde demonios lo saqué :(
Quizás de after-hours o de prototype aunque lo busco y no lo encuentro
Actionscript:
MovieClip.prototype.drawRectangle = function(Nombre, Radio, AnchoT, AltoT, colorFondo, colorLinea, Trazo, Alfa, Prof) {
this.createEmptyMovieClip(Nombre, prof);
Ancho = AnchoT-Radio;
Alto = AltoT-Radio;
clip = this[Nombre];
vel = .1;
with (clip) {
lineStyle(Trazo, colorLinea);
beginFill(colorFondo, Alfa);
moveTo(Radio, 0);
lineTo(Ancho, 0);
for (ang=270*(Math.PI/180); ang<=360*(Math.PI/180); ang += vel) {
x = Ancho+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(AnchoT, Alto);
for (ang=0; ang<=90*(Math.PI/180); ang += 0.05) {
x = Ancho+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(Radio, AltoT);
for (ang=90*(Math.PI/180); ang<=180*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(0, Radio);
for (ang=180*(Math.PI/180); ang<=270*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
endFill();
}
};
//
//Uso
//Nombre, Radio, AnchoT, AltoT, colorFondo, colorLinea, Trazo, Alfa, Prof
this.drawRectangle("mc", 4, 136, 16, 0xADBBBC, 0xADBBBC, 0, 10, 1);
this.createEmptyMovieClip(Nombre, prof);
Ancho = AnchoT-Radio;
Alto = AltoT-Radio;
clip = this[Nombre];
vel = .1;
with (clip) {
lineStyle(Trazo, colorLinea);
beginFill(colorFondo, Alfa);
moveTo(Radio, 0);
lineTo(Ancho, 0);
for (ang=270*(Math.PI/180); ang<=360*(Math.PI/180); ang += vel) {
x = Ancho+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(AnchoT, Alto);
for (ang=0; ang<=90*(Math.PI/180); ang += 0.05) {
x = Ancho+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(Radio, AltoT);
for (ang=90*(Math.PI/180); ang<=180*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Alto+Radio*Math.sin(ang);
lineTo(x, y);
}
lineTo(0, Radio);
for (ang=180*(Math.PI/180); ang<=270*(Math.PI/180); ang += vel) {
x = Radio+Radio*Math.cos(ang);
y = Radio+Radio*Math.sin(ang);
lineTo(x, y);
}
endFill();
}
};
//
//Uso
//Nombre, Radio, AnchoT, AltoT, colorFondo, colorLinea, Trazo, Alfa, Prof
this.drawRectangle("mc", 4, 136, 16, 0xADBBBC, 0xADBBBC, 0, 10, 1);
Corrección 31/08/06: Había un error en el parámetro "Trazo" que impedía dibujar el trazo de la caja publicando en AS2.
