Bienvenido a Klr20mg

Cronicas de un desarrollador

Actualmente soy Jefe de Desarrollo del area Flash en Sapotek de México en la cual trabajo desde hace mas de 4 años. Desarrollando aplicaciones en Flash para Web mas comúnmente llamadas (RIAs)

Estas en : Blog » Calendario
  • Decrease font size
  • Default font size
  • Increase font size
  • color default
  • color verde
  • color azul
Calendario
AddThis Social Bookmark Button
Post2PDF Print
June 24th, 2004

Como alguno de ustedes saben, estoy trabajando en "mini-blog" en Flash, el cual esta un poco olvidado.. :(.
Para tener un Blog es esencial tener un calendario, Flash tiene el Componente DateChooser, pero en lo personal ocupo los componentes muy rara vez..
Esto dio como resultado un esto:

Es el tipico Calendario el cual marca por default el dia actual. El Calendario esta creado en su totalidad con ActionScript excepto los botones y el campo del mes. (no los hice por flojera.. jeje), tal vez despues cree una Clase de esto..

En fin aqui les dejo los archivos para su deleite. :D

Por cierto el SWF solo pesa 2Kb.

Descargar

Comentarios

14 Comentarios en “Calendario”

Oye muy bien! Pero te tengo que decir un par de cosillas, en primer lugar podrias comentar el FLA que no se entiende nada y explikar un pokillo su funcionamiento para que nos maravillemos aun mas!! Otra cosilla es que al llegar a ENERO 2005 se para! no sigue avanzando y para atras pues llegue hasta el 2000 ypodia haber seguido asi que no se como esta la cosa por ahi, eso si muy cool. Tambien falto una "mega-funcion" para señalar dias en los que haya post y/u otras cosillas, aunque kreo que eso ya nos toka mas a nosotros y por eso estoy trabajando alli desde ahora mismo! Por lo demas un gran trabajo! y si puedes echarle un vistazo a los del enero 2005 mejor que mejor! saludetes!

NODANI escribio el 29-June-2004 a las 10:36 am

Wenas
Lo de los comentarios al Fla y la "Mega-Funcion" cuando tenga un tiempo lo hago.. :D

En cuanto a que solo llega al mes de Enero del 2005 es una validacion que se me olvido quitar.. jejeje

solo cambia esto

CODE:
  1. sig_mc.onRelease = function() {
  2.     if (anioActual<=anioReal) {
  3.         if (mesActual<11) {
  4.             verMes(++mesActual, anioActual);
  5.         } else {
  6.             mesActual = 0;
  7.             verMes(mesActual, ++anioActual);
  8.         }
  9.     }
  10. };

Por esto.

CODE:
  1. sig_mc.onRelease = function() {
  2.     if (mesActual<11) {
  3.         verMes(++mesActual, anioActual);
  4.     } else {
  5.         mesActual = 0;
  6.         verMes(mesActual, ++anioActual);
  7.     }
  8. };

Lo de los cometarios es un mal habito casi no los uso.. pero prometo que empezare a hacerlo...

Saludos!! 8)

Tmeister escribio el 29-June-2004 a las 10:58 am

Bueno yo tampoko suelo usar muchos los comentarios, la verdad es que esta bastante bien el code, ya "hice" lo del boton mi codigo es jodidamente cutre [poko elavorado] de todas formas te dejo el FLA, en http://www.nodani.com/calendar.fla y el codigo aki

CODE:
  1. _lockroot = true;
  2. dia_array = ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"];
  3. mes_array = ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"];
  4. mesII_array = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
  5. dias_activos = ["14/5/2004", "30/6/2004", "15/7/2004", "30/7/2004"];
  6. acciones = ["ir a la playa", "comer chino", "comprar coche", "visitar padres"];
  7. function init(pos_x, pos_y) {
  8.     f_date = new Date();
  9.     anioReal = anioActual=f_date.getYear();
  10.     anio = (f_date.getYear()+1900);
  11.     mesReal = mesActual=mes=f_date.getMonth();
  12.     mes_txt.text = mesII_array[mes]+" "+Number(anioActual+1900);
  13.     dia = f_date.getDate();
  14.     diaName = f_date.getDay();
  15.     big = makeSquare(this, 154, 119, 151, "0xffffff", "");
  16.     big._y = pos_x;
  17.     big._x = pos_y;
  18.     for (var a in dia_array) {
  19.         clip = makeSquare(big, 22, 17, a, "0xEBEBEB", dia_array[a]);
  20.         clip._x = a*22;
  21.     }
  22.     mes_temp = (Number(mesReal)<10) ? "0"+(Number(mesReal+1)) : Number(mesReal+1);
  23.     creaDias();
  24. }
  25. function makeDate(te) {
  26.     te = te.split(" ");
  27.     te_fe = te[0].split("-");
  28.     te_anio = te_fe[0];
  29.     te_mes = (Number(te_fe[1])<10) ? te_fe[1].substr(1, 1) : te_fe[1];
  30.     te_dia = (Number(te_fe[2])<10) ? te_fe[2].substr(1, 1) : te_fe[2];
  31.     te_hora = te[1].substr(0, te[1].length-3);
  32.     te_fecha = te_dia+" de "+mesII_array[te_mes-1]+" del "+te_anio+" @ "+te_hora;
  33.     return te_fecha;
  34. }
  35. function verMes(mesV, anio) {
  36.     for (nodani=250; nodani<300; nodani++) {
  37.         _root["tempo"+nodani].removeMovieClip();
  38.     }
  39.     trace(mes+" "+anio);
  40.     f_date = new Date();
  41.     if (mesV == mesReal) {
  42.         dia = f_date.getDate();
  43.         diaName = f_date.getDay();
  44.     } else {
  45.         dia = null;
  46.         diaName = null;
  47.     }
  48.     f_date.setYear(anio);
  49.     anio = (f_date.getYear()+1900);
  50.     f_date.setMonth(mesV);
  51.     mes = f_date.getMonth();
  52.     mes_txt.text = mesII_array[mesV]+" "+Number(anio+1900);
  53.     big = makeSquare(this, 154, 119, 151, "0xffffff", "");
  54.     big._y = 0;
  55.     big._x = 0;
  56.     for (var a in dia_array) {
  57.         clip = makeSquare(big, 22, 17, a, "0xEBEBEB", dia_array[a]);
  58.         clip._x = a*22;
  59.     }
  60.     mes_temp = (Number(mes)<10) ? "0"+(Number(mes+1)) : Number(mes+1);
  61.     creaDias();
  62. }
  63. function makeSquare(tmp_mc, ancho, largo, p, col, label) {
  64.     var tm_mc = tmp_mc.createEmptyMovieClip("tempo"+p, p);
  65.     tm_mc.beginFill(col);
  66.     tm_mc.lineStyle(1, 0xffffff);
  67.     tm_mc.lineTo(0, 0);
  68.     tm_mc.lineTo(0+ancho, 0);
  69.     tm_mc.lineTo(0+ancho, 0+largo);
  70.     tm_mc.lineTo(0, 0+largo);
  71.     tm_mc.lineTo(0, 0);
  72.     format = new TextFormat();
  73.     format.font = "Verdana";
  74.     format.size = 10;
  75.     format.bold = true;
  76.     format.color = 0x990000;
  77.     tm_mc.createTextField("label_txt", p+100, 2, 0, 0, 0);
  78.     tm_mc.label_txt.selectable = false;
  79.     tm_mc.label_txt.html = true;
  80.     tm_mc.label_txt.text = label;
  81.     tm_mc.label_txt.autoSize = true;
  82.     tm_mc.label_txt.setTextFormat(format);
  83.     return tm_mc;
  84. }
  85. function creaDias() {
  86.     var d = b=0;
  87.     var c = 1;
  88.     var t_date = new Date();
  89.     var ya = false;
  90.     var prof = 0;
  91.     for (var a = 0; a<=31; a++) {
  92.         t_date.setYear(anio, mes, a);
  93.         if (t_date.getMonth() == mes) {
  94.             if (!ya) {
  95.                 t_dateb = new Date();
  96.                 t_dateb.setYear(anio, mes, 1);
  97.                 ini = t_dateb.getDay();
  98.                 c = (ini == 0) ? 0 : c;
  99.                 b = ini-1;
  100.                 ya = true;
  101.             }
  102.             hecho = 0;
  103.             for (kil=0; kil<dias_activos.length; kil++) {
  104.                 prof = big.getNextHighestDepth();
  105.                 trace(prof);
  106.                 amparo = new Array();
  107.                 amparo = dias_activos[kil].split("/");
  108.                 if (amparo[1] == (mes+1) && amparo[2] == anio) {
  109.                     dia = amparo[0];
  110.                 } else {
  111.                     dia = 400;
  112.                 }
  113.                 if (t_date.getDate() == dia) {
  114.                     dia_mc = makeBoton(prof, ++d, acciones[kil]);
  115.                     hecho = 1;
  116.                 }
  117.             }
  118.             //end del for
  119.             if (hecho == 0) {
  120.                 dia_mc = makeSquare(big, 22, 17, prof, "0xffffff", ++d);
  121.             }
  122.             b = (ini%7 == 0) ? 0 : ++b;
  123.             c = (ini%7 == 0) ? ++c : c;
  124.             dia_mc._x = b*22;
  125.             dia_mc._y = c*17;
  126.             ini++;
  127.         }
  128.     }
  129. }
  130. ant_mc.onRelease = function() {
  131.     if (mesActual>0) {
  132.         verMes(--mesActual, anioActual);
  133.     } else {
  134.         mesActual = 11;
  135.         verMes(mesActual, --anioActual);
  136.     }
  137. };
  138. sig_mc.onRelease = function() {
  139.     if (mesActual<11) {
  140.         verMes(++mesActual, anioActual);
  141.     } else {
  142.         mesActual = 0;
  143.         verMes(mesActual, ++anioActual);
  144.     }
  145. };
  146. function makeBoton(p, label, accion) {
  147.     var tm_mc = activo.duplicateMovieClip("tempo"+p, p);
  148.     format = new TextFormat();
  149.     format.font = "Verdana";
  150.     format.size = 10;
  151.     format.bold = true;
  152.     format.color = 0x990000;
  153.     tm_mc.createTextField("label_txt", p+100, 2, 0, 0, 0);
  154.     tm_mc.label_txt.selectable = false;
  155.     tm_mc.label_txt.html = true;
  156.     tm_mc.label_txt.text = label;
  157.     tm_mc.label_txt.autoSize = true;
  158.     tm_mc.label_txt.setTextFormat(format);
  159.     tm_mc.bt.onRelease = function() {
  160.         trace(accion);
  161.     };
  162.     return tm_mc;
  163. }
  164. init(0, 0);

he REUTILIZADO lo que teniais en cuanto a lo del boton y tal , en definitiva que como no lo entendia muy bien pues he tokado el menos codigo posible, y usado variables "estranbotikas a fin de no meterme con ninguna tuya" lo uniko que necesitas es añadir a tu fla un MC [llamado "activo" que contenga a un boton llamado "bt" de 22x17 color 0xCCCCCC] o bajarse el fla que puse,usa unos arrays uno de fechas dd/mm/aaaa y otro de acciones, por el momento son traces normales. En fin si ustedes me lo permiten pues lo usare en algun site ok? saludetes

NODANI escribio el 29-June-2004 a las 11:29 am

oups! se me corto el post a mitad, bueno mejor bajate el fla, y solo que usa esos dos arrays del principio y un par de comprobaciones despues, tb uso un MC llamado "activo" que contiene a un boton "bt" de 22x17 de color gris, en fin saludetes

NODANI escribio el 29-June-2004 a las 11:31 am

Umm nice...

Por cierto lo del post fue por que hay un pequeño bug al insertar codigo no parsea bien los < y los >

Ya lo arreglare...

Saludos!! 8)

Tmeister escribio el 29-June-2004 a las 12:00 pm

otro pequeño bug... para atrás, después del 2001 sigue el 3899

muy bueno, saludos

THERROR escribio el 29-June-2004 a las 9:41 pm

yo habia hecho un calendario hace tiempo. los campos no los generaba con AS, pero que yo recuerde, no era tanto codigo como el de nodani.

http://www.danov.com/~evilnibble/calendario.html

NibblesMX escribio el 2-July-2004 a las 1:33 pm

Bueno, aqui las funciones mas "grandes" son makeSquare que genera los cuadros de los dias y la funcion creaDias que crea y acomoda los dias segun el mes, por lo demas el codigo es similar al tuyo. Pero siempre es bueno tener varias opciones :D

Saludos!! 8)

Tmeister escribio el 2-July-2004 a las 2:05 pm

bueno el codigo no es mio, Nibbles, sino del maestro Tmeister, yo solo añadi lo que se pudieran señalar diferentes dias con diferentes acciones, por lo demas el tuyo tambien esta muy bien, solo un pekeño error, selecciona el dia en todos los meses, es decir, si estamos en 4 de julio , tb señalas el 4 d agosto, d septiembre etc etc, saludetees!

NODANI escribio el 4-July-2004 a las 5:16 am

qe tal,,,baje el calendario.fla el de tmeister pero no lo abre.....dice "formato de archivo no esperado" y el .swf al ejecutarlo solo sale la parte del mes ,,pero no sirve los botones,,solo esta estatico,,,,
estoy utilizando flaxh mx, no se si tenga qe ver la version,,,,alguien podria despejar la duda..gracias

alfge escribio el 5-August-2005 a las 2:26 pm

[...] A que va todo esto, El dia de hoy me encuentro que un sitio esta utilizando un ejemplo de mi autoria (Calendario), hasta aqui no hay problema, [...]

.:: klr20mg ::. Una dosis diaria de …. » Blog Archive » Un poco de decencia por favor :) escribio el 5-May-2006 a las 3:31 pm

sum...

sum...

sum escribio el 4-December-2007 a las 11:44 pm

Y como se insertaria las acciones para los dias?,por ejemplo, que el 25 de diciembre te lo marque como Navidad.

Víctor escribio el 22-December-2007 a las 11:58 am

bentley...

asdf asd f43234121123123123wwfasdf...

bentley escribio el 12-June-2008 a las 5:14 am

Leave a Reply

 Blog editado por:

Enrique Chavez aka Tmeister
Si los codigos de este sitio te han ayudado y gustas ayudar de alguna forma:

 Compra Links

 Suscribete


AddThis Social Bookmark Button

 Archivo

2008
2007
2006
2005
2004