Comunidad de diseño web y desarrollo en internet online

Duda al poner fondos a los días de un calendario

Citar            
MensajeEscrito el 05 Jul 2013 08:36 am
Hola a todos, estoy haciendo un calendario en el que quiero ponerle un fondo de color a todos los días que tengan algún tipo de información que cargo de un xml y que despliegan en un tooltip.

El caso es que logro pintar un rectángulo en todos los días, pero yo solo quiero que aparezca en los días con información. Lo estoy haciendo así:

Código ActionScript :

for (var i:Number = 1; i < daysNo + 1; i++) {
                day_mc = new box();
                day_mc.name = "dia" + i;
                day_mc.setDay(i);
                day_mc.addEventListener(MouseEvent.CLICK, getDia);
                
                for each (eventX in eventList) {
                    if (eventX.year == myDate.getFullYear() && eventX.month == myDate.getMonth() + 1 && eventX.dayX == i) {
                  day_mc.addEvent(eventX.dayName);
                  day_mc.addEvent(eventX.hora);
                        day_mc.addEvent(eventX.description);
                        day_mc.addEvent(eventX.email);
                        loadDays(true, i);
                    } else if (!day_mc.hasEvent()){
                        day_mc.removeEvent();
                        loadDays(false, i);
                    }
                }
                days_mc.addChild(day_mc);
 
                day_mc.x = startDay * 28;
                day_mc.y = (row + 1) * 20;
                drawRectangle(true);
                startDay++;

                if (startDay >= 7) {
                    startDay = 0;
                    row++;
                }
            }


En la funcion drawRectangle he puesto lo sigiente:

Código ActionScript :

function drawRectangle(bold:Boolean):void{
   if(bold){
      rectangle.graphics.beginFill(0xA0CC1D, 1);
      rectangle.graphics.drawRect(day_mc.x, day_mc.y, 24, 18);
      rectangle.graphics.endFill();
      days_mc.addChild(rectangle);
   }else{
      days_mc.removeChild(rectangle);
   }
}


con esto consigo dibujar rectángulos en todos los días del calendario, no solo en los que tienen datos cargados del xml.

¿Como podría dibujar el rectángulo sólo en los días que quiero?

Gracias.

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jul 2013 07:00 pm
Ponlo asi

drawRectangle(day_mc.hasEvent());

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 08 Jul 2013 07:42 am
He sustituido la linea:

Código ActionScript :

drawRectangle(true);

por

Código ActionScript :

drawRectangle(day_mc.hasEvent()); 


Y me sale un Argument Error:

ArgumentError: Error #2025: El objeto DisplayObject proporcionado debe ser un elemento secundario del llamador.
at flash.display::DisplayObjectContainer/removeChild()

:?

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Jul 2013 08:37 am
Lo he solucionado. Lo que he echo ha sido crear otra función con argumentos y llamarla en la funcion drawRectangle:

Código ActionScript :

function addBG(mc:MovieClip, color:uint) {
    var rectangle:Shape = new Shape();
    rectangle.graphics.beginFill(color, 1);
    rectangle.graphics.drawRect(mc.x, mc.y, 18, 18);
    rectangle.graphics.endFill();
    mc.addChild(rectangle);
}


Y luego llamo a la función en otra función loadDays:

Código ActionScript :

function loadDays(bold:Boolean, day:Number) {
            var dayLabel:String = day.toString();
            holder = new MovieClip();
            holder.name = dayLabel;
            day_mc.addChild(holder);

            var label_txt:TextField = new TextField();
            label_txt.name = dayLabel+"_txt";
            label_txt.autoSize = TextFieldAutoSize.LEFT;
            label_txt.text = dayLabel;
            label_txt.selectable = false;
            label_txt.mouseEnabled = true;
            label_txt.defaultTextFormat = day_tf;
       
            if(bold) {
                label_txt.setTextFormat(boldText);
      addBG(holder, 0xA0CC1D);
            } else {
                label_txt.setTextFormat(day_tf);
            }
            holder.addChild(label_txt);


Gracias!

Por plug

78 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.