Foros del Web » Creando para Internet » Flash y Actionscript »

Pequeño calendario semanal

Estas en el tema de Pequeño calendario semanal en el foro de Flash y Actionscript en Foros del Web. Hola, estoy intentando hacer un calendario semanal usando POO. De momento sólo estoy haciendo pruebas de visualización en pantalla de una semana, sin funcionalidad ni ...
  #1 (permalink)  
Antiguo 29/11/2008, 07:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 14 años, 6 meses
Puntos: 3
Pequeño calendario semanal

Hola, estoy intentando hacer un calendario semanal usando POO. De momento sólo estoy haciendo pruebas de visualización en pantalla de una semana, sin funcionalidad ni nada, pero ya estoy tropezándome.

He creado dos clases: Dia, que dibuja un recuadro con un ancho dado y un campo de texto con el día de la semana especificado, y Semana, que debe calcular su ancho al 90% con respecto al clip que lo contiene (el clip ppal), crear 7 objetos de la clase Dia y colocarlos secuencialmente de forma horizontal.

Os pongo el código que he hecho a ver si podeis ayudarme:

Código PHP:
class Dia {
    private var 
ancho:Number;
    private var 
recuadro:MovieClip;
    private var 
campoTexto:TextField;
    
    public function 
Dia(textoDia:Stringancho:NumberposX:NumberposY:Numberpadre:MovieClip) {
        
recuadro padre.createEmptyMovieClip("dia"padre.getNextHighestDepth());
        
recuadro._x posX;
        
recuadro._y posY;
        
dibujarRecuadro(ancho);
        
anyadirCampoTexto(textoDia);
    }
    
    private function 
dibujarRecuadro(ancho:Number) {
        
recuadro.lineStyle(1,0x0000cc,100);
        
recuadro.beginFill(0xcccccc,100);
        
recuadro.moveTo(0,0);
        
recuadro.lineTo(ancho,0);
        
recuadro.lineTo(ancho,50);
        
recuadro.lineTo(0,50);
        
recuadro.lineTo(0,0);
        
recuadro.endFill();
    }
    
    private function 
anyadirCampoTexto(texto:String) {
        var 
anchoCampoTexto:Number recuadro._width*90/100;
        
trace('Ancho dia: ' recuadro._width ', Ancho Campo Texto: ' anchoCampoTexto);
        var 
posicionX:Number = (recuadro._width anchoCampoTexto) - (recuadro._width anchoCampoTexto)/2;
        
campoTexto recuadro.createTextField('textoDia'recuadro.getNextHighestDepth(), posicionX20anchoCampoTexto20);
        
campoTexto.text texto;
        
campoTexto.background true;
        
campoTexto.backgroundColor 0xffffff;
    }

Código PHP:
class Semana {
    private var 
ancho:Number;
    private var 
listaDias:Object;
    
    public function 
Semana(padre:MovieClip) {
        var 
arrayDeDias:Array = new Array('lunes''martes''miércoles''jueves''viernes''sábado''domingo');
        
ancho calcularAncho(padre);
        
trace('Ancho semana: ' ancho);
        var 
anchoDia:Number calcularAnchoDia(arrayDeDias.length);
        
trace('Ancho dia: ' anchoDia);
        
poblarSemana(anchoDiaarrayDeDiaspadre);
    }
    
    private function 
calcularAncho(padre:MovieClip):Number {
        return 
padre._width*90/100;
    }
    
    private function 
calcularAnchoDia(numDias:Number):Number {
        return 
ancho/numDias;
    }
    
    private function 
poblarSemana(anchoDia:Numberdias:Array, padre:MovieClip) {
        
listaDias = new Object();
        var 
diaActual:Dia;
        
listaDias.dias dias;
        
listaDias.contenedorDias = new Object();
        for (var 
i:Number 0dias.lengthi++) {
            var 
nombreDiaActual:String dias[i];
            
diaActual = new Dia(nombreDiaActualanchoDiaanchoDia*i0padre);
            
listaDias.contenedorDias[nombreDiaActual] = diaActual;
        }
        
trace(listaDias);
    }

Línea tiempo ppal, donde comienza la ejecución:
Código PHP:
var miSemana:Semana = new Semana(this); 
El error parece que empieza casi desde el principio, al intentar calcular el ancho que deberá tener el objeto de clase Semana en base al ancho del clip que lo contiene, en este caso el clip principal o _root que le paso como argumento mediante this. El ancho obtenido me da 0.

Sólo teneis que fijaros en el constructor de Semana y el método calcularAncho() porque el error debe estar ahí.


Por lo demás, he hecho pruebas con la clase Dia unicamente, y me funciona bien. P.ej:

Código PHP:
var miDia:Dia = new Dia("sabado",100,0,0,this); 
funciona perfectamente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:14.