Dejo el code para q me lo mireis :
Código :
import com.buho.dibujo.Dibujo;
import com.buho.utilidades.ObjectLoader;
class com.buho.componentes.Preload extends com.buho.componentes.BuhoObject {
// capas
var $fondo: Dibujo ;
var $barra: Dibujo ;
var $barraLinea: Dibujo ;
// medidas
var $ancho: Number = 80 ;
var $alto: Number = 10 ;
var $anchoMarco: Number = 100 ;
var $altoMarco: Number = 40 ;
// texto
var $CampoTexto: MovieClip ;
var $texto : Array ;
var $css:Object;
// color componente
private var $styleUndefined:Boolean =true;
private var $style:Object = new Object();
// transferencia
var $objectoLoad ;
private var classLoader:ObjectLoader ;
// posicion de la barra
private var $posx:Number ;
private var $posy:Number ;
//referencia donde aplicar el evento
private var $listener:Object ;
//default style
static var $styleGlobal = {
movimiento : {
ecuacion : com.robertpenner.easing.Quint.easeOut ,
duracion : 15 , // duracion de el movimiento en frames/sg
interval : 1 // tiempo en la q se comprueba como va la transeferencia , + tiempo = + bruto , en sg
},
barra : {
ver:true,
radio : 0,
inf : {
color: {
ver :{linea:false, fondo:"solido"} ,
solido:{color:0x4B6B7C, alpha:100}
}
},
med : {
color: {
ver :{linea:false, fondo:"degradado"} ,
solido:{color:0x777777 , alpha:40},
degradado:{type:"linear", color:[0xFFFFFF, 0x4B6B7C, 0x8EAEB9], ratio:[0, 100,255]}
}
},
sup : {
color: {
ver :{linea:true, fondo:false} ,
linea:{grosor:2 , color:0x555555 , alpha:100}
}
}
},
marco:{
ver:true,
radio : 10,
color: {
ver :{linea:false, fondo:"solido"} ,
solido:{color:0xC2CFD5 , alpha:80}
}
}
}
//// CONSTRUCTOR
function Preload () {
//creamos la capas donde dibujaremos
$fondo = Dibujo.addDibujo (this,0,0,1);
$barra = Dibujo.addDibujo (this,0,0,2);
$barraLinea = Dibujo.addDibujo (this,0,0,3);
}
static function addPreload (clip , x:Number, y:Number , nivel:Number):Preload {
if(x==undefined)x=0;
if(y==undefined)y=0;
if(nivel==undefined) nivel = clip.getNextHighestDepth();
var tempPreload:Preload = Preload(clip.attachMovie("Preload", "preload" + nivel , nivel,{_x:x,_y:y}));
return tempPreload ;
}
//// MEDIDAS DE EL PRELOAD
function setSize (barra:Object,marco:Object) {
// medidas
if(barra != undefined){
$ancho = barra.ancho ;
$alto = barra.alto ;
}
if(marco != undefined){
$anchoMarco = marco.ancho ;
$altoMarco = marco.alto ;
}
// cargando style
if ($styleUndefined){
if(_global.buho.preload._style != undefined)$style = _global.buho.preload._style
else $style = $styleGlobal;
}
// dibujando el tinglao
drawText ();
draw();
}
//// INICIO COMPONENTE
function load (target,obj):Void{
//objecto q se le aplicara el metodo "onLoadComplete"
$listener = target ;
// supervisando la descarga
$objectoLoad = obj ;
classLoader = new ObjectLoader(this,$objectoLoad,$style.movimiento.interval);
move(0)
mueveBarra($barra,0);
}
//// PROPIEDAD _style
// cambia el estilo de el componente
function set _style (obj:Object):Void {
$style = obj ;
$styleUndefined = false
}
//// METODO setTexto
//
function setTexto (texto:String,css:Object) {
$css = formateaText(css) ;
$texto = texto.split("#");
}
function onLoadProgress(obj){
$CampoTexto.htmlText = parseaTexto ($texto,obj);
mueveBarra($barra,obj.porcentaje);
}
function onLoadComplete(obj){
move(100);
$CampoTexto.htmlText = parseaTexto (["Cargado"],obj);
$listener.onLoadComplete($objectoLoad,obj.bytesTotal);
}
function onLoadError(str:String){
$listener.onLoadError($objectoLoad,str);
}
private function move(scale){
delete $barra.onEnterFrame ;
// inicio de variables para $barra
$barra.duracion = $style.movimiento.duracion ; // frames/sg
$barra.antes=0
$barra._xscale=scale;
}
private function parseaTexto (array:Array,obj:Object):String {
var result = "<titulo>";
for ( var i = 0 ; i<=array.length-1; i++ ){
if (array[i].substr(0,1)=="$")result += obj[array[i].substr(1)];
else result += array[i];
}
return result += "</titulo>";
}
private function draw(){
// cuando hay marco
if($style.marco.ver){
// marco
$fondo._style = $style.marco.color;
$fondo.rRectangulo($anchoMarco,$altoMarco,0,0,$style.marco.radio);
if ($style.barra.ver){
// barra inf
$fondo._style = $style.barra.inf.color;
$fondo.rRectangulo($ancho,$alto,$posx,$posy,$style.barra.radio);
// barra med
$barra._x = $posx ;
$barra._y = $posy ;
$barra._style = $style.barra.med.color;
if($style.barra.med.color.matrix==undefined){
$barra._style = { matrix:{x:$ancho/2, y:$alto/2, w:$alto, h:$ancho, r:90}};
}
$barra.rRectangulo($ancho,$alto,0,0,$style.barra.radio);
$barra._xscale = 0 ;
// barra sup
$barraLinea._x = $posx ;
$barraLinea._y = $posy ;
$barraLinea._style = $style.barra.sup.color;
$barraLinea.rRectangulo($ancho,$alto,0,0,$style.barra.radio);
}
// cuando no hay marco
} else if ($style.barra.ver){
// barra inf
$fondo._style = $style.barra.inf.color;
$fondo.rRectangulo($ancho,$alto,$posx,$posy,$style.barra.radio);
// barra med
$barra._style = $style.barra.med.color;
$barra._style = { matrix:{x:$ancho/2, y:$alto/2, w:$alto, h:$ancho, r:90}}
$barra.rRectangulo($ancho,$alto,$posx,$posy,$style.barra.radio);
$barra._xscale = 0 ;
// barra sup
$barraLinea._style = $style.barra.sup.color;
$barraLinea.rRectangulo($ancho ,$alto , $posx ,$posy , $style.barra.radio);
}
}
//// TEXTO
private function formateaText(css:Object){
if(css == undefined) {
//si no existe en _global
if(_global.buho.preload.css == undefined){
return {
ver:true,
color: '#000000',
fontFamily: '_sans',
fontSize: '9',
fontWeight: 'bold',
textAlign : 'center' ,// left // right // center
posy : 'inf' // sup // inf // med
};
//si existe en _global
}else return _global.buho.preload.css ;
}else return css ;
}
private function drawText ():Void {
//texto
if($css.ver)this.createTextField("$CampoTexto", 4, 0, 0 ,0,0);
var css = new TextField.StyleSheet();
css.setStyle("titulo", $css)
$CampoTexto.autoSize = $css.textAlign;
$CampoTexto.selectable = false;
$CampoTexto.html = true ;
$CampoTexto.styleSheet = css ;
//$CampoTexto.border = true;
$CampoTexto.htmlText = parseaTexto ($texto,{porcentaje:0,bytesTotal:"??",bytesLoaded:0});
//// RECOLOCANDO BARRA Y EL CAMPO DE TEXTO
// recoloca todo segun la css
// cuando hay marco
if ($style.marco.ver){
$posx = ($anchoMarco - $ancho )/2;
//moviendo x
switch ($css.textAlign) {
case "left":
$CampoTexto._x = $posx
break;
case "center":
$CampoTexto._x = Math.round( $posx+(($ancho - $CampoTexto._width)/2 ));
break;
case "right":
$CampoTexto._x = Math.round( $posx+($ancho - $CampoTexto._width )) ;
break;
}
//moviendo y
switch ($css.posy) {
case "inf":
var posy = ($altoMarco - $alto - $CampoTexto._height)/3;
if (posy>$style.marco.radio){
$posy = posy ;
$CampoTexto._y = Math.round( $posy*2 + $alto ) ;
}else{
$posy = $style.marco.radio;
var centro = ($altoMarco - $alto - $CampoTexto._height-$posy)/2
$CampoTexto._y = Math.round( $posy + $alto + centro);
}
break;
case "med":
$posy =(($altoMarco - $alto )/2)
$CampoTexto._y = Math.round( ($altoMarco - $CampoTexto._height)/2 ) ;
break;
case "sup":
var posy = ($altoMarco - $alto - $CampoTexto._height)/3;
if (posy>$style.marco.radio){
$posy = $altoMarco - posy - $alto;
$CampoTexto._y = Math.round( posy ) ;
}else{
$posy = $altoMarco - $style.marco.radio - $alto;
var centro = ($posy-$CampoTexto._height)/2 ;
$CampoTexto._y = Math.round( centro) ;
}
break;
}
// cuando no hay marco
}else{
$posy = $posx = 0;
//moviendo x
switch ($css.textAlign) {
case "left":
break;
case "center":
$CampoTexto._x = Math.round( ($ancho - $CampoTexto._width)/2 ) ;
break;
case "right":
$CampoTexto._x = Math.round( $ancho - $CampoTexto._width ) ;
break;
}
//moviendo y
switch ($css.posy) {
case "inf":
$CampoTexto._y = Math.round( $alto) ;
break;
case "med":
var centrar = ($alto - $CampoTexto._height )/2 ;
$CampoTexto._y = Math.round( $CampoTexto._y + centrar ) ;
break;
case "sup":
$CampoTexto._y = Math.round( -$CampoTexto._height ) ;
break;
}
}
}
function mueveBarra (mc:Dibujo,porcen:Number):Void{
delete mc.onEnterFrame ;
mc.posini = mc._xscale = mc.antes;
mc.distancia = porcen - mc.posini ;
mc.tiempo = 0 ;//contador
mc.onEnterFrame = function() {
with (this) {
_xscale = _parent.$style.movimiento.ecuacion(tiempo++, posini , distancia, duracion);
if (tiempo>duracion) delete onEnterFrame;
}
};
mc.antes = porcen ;
}
function toString ():String {return "Preload" ;}
}Unos ejemplos de mi preload
los ejemplo funciona , solo teneis q pulsar sobre ellos ...
Bueno paso 2 cumplido !! -->mirar de q ostia hablo
Abra paso 3 ?
no he jugado demasiado con los colores (degradados) ni con la fuente pero esto da mucho mas !!!
Se me olvidaba ... , mirar en la cache
salu2

