calendario en flash
7 seguidores
muy buenas tardes domestikos alguien sabe donde puedo encontrar un buen tutorial de como hacer un calendario en flash
muy buenas tardes domestikos alguien sabe donde puedo encontrar un buen tutorial de como hacer un calendario en flash
Seguro que tienes mucho que decir, te estamos esperando.
deeleman
lagunaomar
muchas gracias deeleman y xrv sois la leche en cuanto este terminada la pagina os mando un e-mail :) voy a ponerme a piñon
Ok, de todos modos imagino que será esta:
http://www.josevidal.com
Estaré al tanto. Por cierto: Los números de teléfono y fax no son correctos.
XrV
deeleman
Y en cuanto al apellido, :-), es que me resulta mas facil recordarlo que lo de XrV, sobre todo despues del OFFF (aunque me perdi tu conferencia, soooorrryyyyyyy);-)
Si, Palau 4 president queda bien y todo (a ver si me hago famoso y me pagan dinero por poner mi nombre en algún producto de "Acicalage" masculino como puede ser una colonia XDDD...
Colonia Palau, para webmasters muy frikis .... XDDDDDDDDDD
ejejej, se que habia gente más interesante que ver ;) tranki.
lagunaomar
muchas gracias deeleman y xrv sois la leche en cuanto este terminada la pagina os mando un e-mail :) voy a ponerme a piñon
deeleman
XrV
felicidades tio, eso te habrá llevado un buen rato ;D!!!
(por cierto XD me vas a gastar el apellido XDDD, e broma:P)
La verdad es que no, porque casi todo el trabajo "duro" por llamarlo de algun modo lo hiciste tu ya, yo solo me he limitado a rematarlo y conectarlo a datos.
Y en cuanto al apellido, :-), es que me resulta mas facil recordarlo que lo de XrV, sobre todo despues del OFFF (aunque me perdi tu conferencia, soooorrryyyyyyy);-)
XrV
ezuuuuuuuuuuuuuuuuuuuuuuuuuu eso es wenissssssimoooooooooooo!!!!
felicidades tio, eso te habrá llevado un buen rato ;D!!!
(por cierto XD me vas a gastar el apellido XDDD, e broma:P)
ala DL, ahora no podrás quejarte eh ;)
deeleman
Bien, la rutina de Palau es muy buena, aunque yo hubiera preferido generar los días como MC para m´sa comodidad y flexibilidad. DE todos modos, da igual, porque todo es posible. Ahi va la rutina definitiva:
<code>
//--------------------------------------------------------------
// Cargamos los datos de Eventos para el mes correspondiente
miFecha = new Date();
dia = miFecha.getDate();
//nos devuelve el dia del mes (hoy es 12)
mes = miFecha.getMonth();
//nos devuelve el mes empezando a contar desde 0 (enero = 0)
anyo = miFecha.getYear()+1900;
//al año se le suman 1900 pq nos devuelve el valor desde esa fecha (año 1900)
meses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
//también necesitamos un listado del total de dias que tiene cada mes:
diasPorMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
//y si el año es bisiesto pues modificamos la posición 1 del array (febrero) de diasPorMes:
if (((anyo%4 == 0) && (anyo%100 != 0)) || (anyo%400 == 0)) {
diasPorMes[1] = 29;
}
//Estamos a 6, la posición 6 del array es Julio, pues:
mesActual = meses[mes];
//mes lo hemos sacado más arriba eh
function generaRejilla() {
//profundidad para los clips que crearemos
var d = 0;
//creamos el clip dnd metermos el calendario
_root.createEmptyMovieClip("calendario", 0);
//creamos un campo de texto para el mes
d++;
calendario.createTextField("elMes", d, 0, 0, 140, 20);
calendario.elMes.border = true;
calendario.elMes.borderColor = '0xEBEBEB';
calendario.elMes.background = true;
calendario.elMes.backgroundColor = '0xDFEFFF';
//hacemos un bucle de 7x6 ya que una semana
//tiene 7 dias y un mes puede ocupar 6 filas
for (i=0; i<7; i++) {
for (j=0; j<6; j++) {
//incremento para la profundidad de los clips:
d++;
//creamos un campo de texto y le damos
//un nombre de instancia que luego podamos
//rellenar con facilidad usando otro bucle
//igual que este:
calendario.createTextField("dia"+i+"_"+j, d, i*20, (j*20)+20, 20, 20);
//creamos una referencia al campo de texto
//que acavamos de crear:
tClip = calendario["dia"+i+"_"+j];
//activamos que se pueda usar HTML
tClip.html = true;
// Modificamos algunas de sus propiedades para hacerlo más vistoso
tClip.border = true;
tClip.borderColor = '0xEBEBEB';
//tClip.htmlText=""+d+"";
}
}
}
generaRejilla();
//ahora rellenamos la rejilla con nuestros datos y ...
function rellenaRejilla(dia, mes, anyo) {
//rellenamos el campo superior con el mes y el año
calendario.elMes.html = true;
calendario.elMes.htmlText = "<p align='center'><font color='#003399' face='arial' size='10'>"+meses[mes].toUpperCase()+" del "+anyo+"</font></p>";
//ahora vamos a sacar el dia donde empezamos a rellenar
//el calendario, para ello modificamos la fecha del objeto
//Date actual (miFecha) a dia 1.
miFecha.setDate(1);
primerDia = miFecha.getDay()-1;
if (primerDia == -1) {
primerDia = 6;
}
//y el total de dias que tiene el mes
ttlDias = diasPorMes[mes];
//tenemos la variable que nos cuenta los dias del mes
diaadia = 0;
//iniciamos el bucle
for (j=0; j<6; j++) {
//para que el dia nos empieze donde pertenece en el calendario
//tenemos que iniciar el bucle a partir de ese dia
for (i=primerDia; i<7; i++) {
//como que los siguientes dias empiezan a partir de la
//primera posición, pues definimos primerDia como 0
//i el bucle empezará de 0
primerDia = 0;
//si el dia actual es inferior al total de dias que tiene el mes
//rellenaremos los campos
if (diaadia<ttlDias) {
//incrementamos el dia actual
diaadia++;
//creamos una instancia a un clip para abreviar (no se si es muy correcto usar instanciar para esto)
tClip = calendario["dia"+i+"_"+j];
tClip.background = true;
//si el dia del bucle es igual al dia actual
//aplicaremos un estilo al dia (de color rojo)
//mientras que si no, pues solo negrita
if (diaadia == dia) {
tClip.htmlText = "<p align='center'><font color='#ff0000' face='arial' size='10'>"+diaadia+"</font></p>";
tClip.backgroundColor = '0xFFFFFF';
} else {
tClip.htmlText = "<p align='center'><font face='arial' size='10'>"+diaadia+"</font></p>";
tClip.backgroundColor = '0xEBEBEB';
}
tClip.selectable = false;
tClip.miDia = diaadia;
// Revisamos este día contra la matriz de datos cargados, realizando
// un bucle multiple.
//trace(diaadia + ' ' + events[mes+1,diaadia])
if (events[mes+1,diaadia].length > 0){
tClip.htmlText = "<p align='center'><font face='arial' size='10' color='#ED7F12'>"+diaadia+"</font></p>";
tClip.backgroundColor = '0xFFEBE1';
tClip.selectable = true;
tClip.useHandCursor = true;
tClip.onSetFocus = function(){
this.textColor = '0x6B8DCF';
/* Situamos a continuación la llamada a las rutinas
que cargan eventos de acuerdo al día y mes
*/
loadEvent(mes+1,this.miDia,events[mes+1,this.miDia])
}
}
}
}
}
}
//--------------------------------------------------------------
// Rutina de carga de Datos por XML de los eventos de este mes
//--------------------------------------------------------------
// Primero definimos las matrices que almacenaran los datos
eventsMes = new Array(12);
eventsDia = new Array(31);
events = new Array(eventsMes(),eventsDia());
// Generamos el objeto myXml que recoge los datos de nuestro archivo XML
myXml = new XML();
myXml.ignoreWhite = true;
myXml.onLoad = function(success) {
if (success) {
// Creamos la matriz de contenidos a partir de los datos contenidos en el XML
for (x=0; x<myXml.firstChild.childNodes.length; x++) {
var myXmlMes = myXml.firstChild.childNodes[x].childNodes[0].childNodes[0].nodeValue;
var myXmlDia = myXml.firstChild.childNodes[x].childNodes[1].childNodes[0].nodeValue;
var myXmlData = myXml.firstChild.childNodes[x].childNodes[2].childNodes[0].nodeValue;
events[myXmlMes,myXmlDia] = myXmlData;
}
//llamamos a la función rellenar rejilla con el dia, mes y año que queremos
// que nos muestre nuestro super calendario domestiko!!
rellenaRejilla(dia, mes, anyo);
}
};
myXml.load("eventos.xml");
// Generamos la funcion que hara 'algo' el seleccionar un dia con eventos
function loadEvent(mes,dia,evento){
// Situar acciones a continuacion y
// comenta o elimina la linea seguiente
trace('El mes es '+mes+' y el dia es '+dia + ' y el evento es '+evento);
}
</code>
Bien, vayamos por partes, como habrás observado, de la rutina de Palau no he cambiado practicamente nada, a excepción de los campos de texto del nombre de mes y los días, dado que soy excepcionalmente escrupuloso con esas cosas. En cocnreto les he dado formato y un tipo mas pequeño.
Aparte de eso, las funciones de generación de la rejilla y de relleno de la rejilla permanecen igual, aunque esta ultima presenta un cambio importante: Al final observaras que almaceno el dato del dia en una variable interna del campo
tClip.miDia = diaadia;
Asi puedo volver a ella de forma particular cada vez. Luego, observarás esta rutina:
<code>if (events[mes+1,diaadia].length > 0){
tClip.htmlText = "<p align='center'><font face='arial' size='10' color='#ED7F12'>"+diaadia+"</font></p>";
tClip.backgroundColor = '0xFFEBE1';
tClip.selectable = true;
tClip.useHandCursor = true;
tClip.onSetFocus = function(){
this.textColor = '0x6B8DCF';
/* Situamos a continuación la llamada a las rutinas
que cargan eventos de acuerdo al día y mes
*/
loadEvent(mes+1,this.miDia,events[mes+1,this.miDia])
}
}</code>
En concreto, este pedazo de rutina continua con la evaluación de dias que efctua el bucle inmediatamnete anterior, pero en vez de de evaluar si el dia se corresponde con el dia de hoy, evalua que en la matriz bidimensional que veremos mas adelante no hay un evento creado para ese mes y día. En caso de ser así, ofrece otro formato a la celda y le proprociona un evento setFocus. Ello nos permite disparar eventos si el ususario hace click en el día y de paso lo usamos para cambioar el color de la tipo cuando el usuario hace click, asemejando un enlace visitado.
Bien, luego nos encontramos con este modulo:
<code>//--------------------------------------------------------------
// Rutina de carga de Datos por XML de los eventos de este mes
//--------------------------------------------------------------
// Primero definimos las matrices que almacenaran los datos
eventsMes = new Array(12);
eventsDia = new Array(31);
events = new Array(eventsMes(),eventsDia());
// Generamos el objeto myXml que recoge los datos de nuestro archivo XML
myXml = new XML();
myXml.ignoreWhite = true;
myXml.onLoad = function(success) {
if (success) {
// Creamos la matriz de contenidos a partir de los datos contenidos en el XML
for (x=0; x<myXml.firstChild.childNodes.length; x++) {
var myXmlMes = myXml.firstChild.childNodes[x].childNodes[0].childNodes[0].nodeValue;
var myXmlDia = myXml.firstChild.childNodes[x].childNodes[1].childNodes[0].nodeValue;
var myXmlData = myXml.firstChild.childNodes[x].childNodes[2].childNodes[0].nodeValue;
events[myXmlMes,myXmlDia] = myXmlData;
}
//llamamos a la función rellenar rejilla con el dia, mes y año que queremos
// que nos muestre nuestro super calendario domestiko!!
rellenaRejilla(dia, mes, anyo);
}
};
myXml.load("eventos.xml");
</code>
Lo que hace este modulo es cargar un archivo XML externo (tu veras como lo generas, mi consejo es que almacenes los datos en una BBDD y mediante PHP o ASP, Cold Fusion o lo que te de la gana generes el XML en tiempo de ejecucion). Dicho xml deberia tener los datos de eventos para todo el año, de este modo:
<code><?xml version="1.0" encoding="utf-8"?>
<datos>
<evento>
<mes>8</mes>
<dia>25</dia>
<evento>Carreras de Motos</evento>
</evento>
<evento>
<mes>8</mes>
<dia>27</dia>
<evento>Carreras de Coches</evento>
</evento>
</datos></code>
Una vez cargado, se llama a la funcion que rellena la rejilla, y NO ANTES, dado que los datos deben estar cargados y alimentar la matriz bidimensional interna antes de rellenar los datos.
Ya finalmente, observarás una fucnión adicional:
<code>function loadEvent(mes,dia,evento){
// Situar acciones a continuacion y
// comenta o elimina la linea seguiente
trace('El mes es '+mes+' y el dia es '+dia + ' y el evento es '+evento);
}</code>
Esta funcion recoge el evento disparado al hacer click en los dias destacados con eventos mediante el setFocus correspondiente y recoge el mes y dia, junto con el titulo del evento. Con esta función, ya integrarás tu mismo las acciones pertinentes que quieres que se desarrollen.
Y eso es todo, fiuuuuu.
Quiero ver la pagina cuando este finalizada. Enviame un mail cuando la tengas.
Un saludo a todos.
lagunaomar
pues deleeman estoy mas perdido :( si estoy haciendo cada dia en un mc que no se si es lo mas recomendable, y si estoy probando con la rutina de palau que tampoco se si para este caso es lo mas apropiado si no fuese mucha molestia que me recomendarias :)
deeleman
lagunaomar
pues deeleman lo quiero hacer exactamente como lo tienes tu en tu web, asi poder ir actualizando dicho calendario
Si, eso ya me lo he imaginado. Pero para ello es preciso saber cómo tienes montado el calendario. ¿Has utilizado la rutina de Palau?¿O has empelado un componente?
¿Cada dia es un MC?¿Como pretendes cargar los eventos?¿Desde donde: base de datos, ficheros de texto, etc?
lagunaomar
me gustaria saber cual es la mejor manera si enlazar cada mc a un archivo xml o a que tipo de archivo estoy un poco perdido pero mirando y probando seguro que lo consigo
lagunaomar
deeleman
A ver Omar...
1. ¿Como has montado el calendario? ¿Cada dia es un MC o has empleado otro sistema?
2. ¿Como piensas cargar los eventos en el clip SWF?
3. ¿Como piensas consultar las peticiones de información para un día concreto por parte de los usuarios?
pues deeleman lo quiero hacer exactamente como lo tienes tu en tu web, asi poder ir actualizando dicho calendario
XrV
sike
yo no te puedo ayudar ahora.. pero te digo k éste post me va a ayudá mucho a mi :)
por cierto.. muchas gracias XrV.. de verdad!! por dios!! jeje ke me acabas de alegrar la tarde!
<div class="post_image">http://www.jref.com/forum/images/smilies/silly.gif</div>
jejejej... pues me alegro un montón!! :D ya me ensenyarás lo que tas haciendo q esto te ayudará tanto :D
deeleman
A ver Omar...
1. ¿Como has montado el calendario? ¿Cada dia es un MC o has empleado otro sistema?
2. ¿Como piensas cargar los eventos en el clip SWF?
3. ¿Como piensas consultar las peticiones de información para un día concreto por parte de los usuarios?
sike
yo no te puedo ayudar ahora.. pero te digo k éste post me va a ayudá mucho a mi :)
por cierto.. muchas gracias XrV.. de verdad!! por dios!! jeje ke me acabas de alegrar la tarde!
http://www.jref.com/forum/images/smilies/silly.gif
lagunaomar
ohhh gurus de flash exarme una mano por fa :)
lagunaomar
Buenas noches retomando lo del calendario, bueno ya esta claro lo del calendario como me dijisteis, ahora bien estoy probando hacerlo como dije con evento a ver si me explico bien :)
Lo que quiero ahora es poder introducir datos en los días a elegir pero no solo muestre el día en concreto si no que puedas ir a cualquier fecha marcarla y poder visualizar los datos de día en concreto lo estoy haciendo para una pagina de un monitor de fitness para que el así pueda ir actualizando dicho calendario con los eventos concertados me imagino que será lioso pero bueno con vuestra ayuda y horas de practica seguro que sale:)
TheOm3ga
Wep!
En la página de TMeister (tmeister.net) hay un calendario que hizo, aunque es más de lo mismo porque creo que no tiene lo de meter las fechas de los eventos y toas esas cosas, pero vamos, se podría modificar un poco ajin fiu fiu.
hecspc
lagunaomar
lo que quiero es hacer un calendario de eventos deportivos y poder introducir datos en los dias y que los mismos al introducir datos cambie de color y asi saber que dias hay eventos deportivos y poder visualizarlo me imagino que sera complicado!!!
y por que no pruebas entonces el phpIcalendar es una aplicacion que te genera un calendaria actualizable desde ical o outlook y esta bastante bien.... miratelo que puede que te interese :D
XrV
no es complicado, es laborioso. Simplemente requiere de unas cuantas horas de producción :)
ya sabes, si sabes claro lo que quieres, simplemente empieza a hacerlo y pregunta tus dudas
saludines
lagunaomar
lo que quiero es hacer un calendario de eventos deportivos y poder introducir datos en los dias y que los mismos al introducir datos cambie de color y asi saber que dias hay eventos deportivos y poder visualizarlo me imagino que sera complicado!!!
hecspc
aparte de lo dificil que es ajustarlos al diseño de tu pagina y al final lo que tienes son paginas estandarazidas con todos los elementos iguales....
DO IT YOURSELF!!!!
XrV
completamente deacuerdo, el problema que tengo yo es que nunca estoy contento con lo que me ofrecen los componentes, ya sea porque les falta algo o porque les sobra demasiado, así que completamente deacuerdo con hecspc
hecspc
yo estoy con Xrv....
si sabes programar programalo... eso si, si puedes coger el codigo que otros han programado para que hacerlo tu? :D
Pero una cosa tan cerrada y hermética como un componente aaaggghhh quita quita o me hace maravillas porque sino prefiero chapar teclado a mansalva y asi tener un control 100% de lo que hace (aunque no me haga tantas virguerías que no usaré).
Usuario desconocido
XrV
eso son collejones? (jo jo jo :P)
son aplausos!!!
que sabes que "trapezio"
:D
XrV
ajjaajja q va omega, es la mejor opción, hay unos componentes de calendario para flash para cagarse por la pata baja. Q yo sea una matado y me guste programarlo todo en lugar de usar componentes no significa que sea una buena opción lo que propone pedro (por no decir que coincido con que es una mejor opción para alguien que no sabe mucho de programación, que no se si es el caso pero bueno)
ala, saludines y tal
pedro_fm
en google con flash calendar component te sale en la primera pagina, con ejemplos y tó.
TheOm3ga
pedro_fm
hay un componente muy bueno, que lo hace solito :)
Dió XRV ha dejao tu tuto (que está weno) por los suelo xD
pedro_fm
lagunaomar
muy buenas tardes domestikos alguien sabe donde puedo encontrar un buen tutorial de como hacer un calendario en flash
hay un componente muy bueno, que lo hace solito :)
lagunaomar
muchas gracias XrV eres un crack :)
XrV
jipipayo
CLAP! CLAP! CLAP!
:D
eso son collejones? (jo jo jo :P)
Usuario desconocido
CLAP! CLAP! CLAP!
:D