martes, julio 31, 2012

Tutorial de desarrollo web, Parte XLIII: Clases y objetos (I)

Bien, a lo largo de estas últimas semanas hemos aprendido cosas bastante propias del JavaScript. Funciones como la "getElementById" o los eventos no serán cosas que veamos en todos los lenguajes de programación (aunque los eventos están presentes en la gran mayoría... y el "getElementById", aunque también muchos suelen tenerlos, se usa para casos muy específicos), pero hoy vamos a volver a ver elementos bastantes básicos de la programación, los cuales ya hemos mencionado muchas veces a lo largo del curso pero que hoy aprenderemos mejor lo que son: los objetos. Como este tema es bastante complejo, hoy daremos sólo teoría y la semana que viene pasaremos a la práctica.
A lo largo del curso he hablado en múltiples ocasiones de los objetos. Los arrays son objetos, las strings son objetos, el document que tanto hemos usado es también un objeto... Pero, ¿qué es un objeto? Todos podemos apuntar que en el mundo real, un objeto es cualquier elemento con el que nos encontremos que no tenga vida. Un libro, un coche o un ladrillo son objetos. Casi cualquier cosa que se nos ocurra es un objeto. ¿Tiene ésto algo que ver con lo que es un objeto en programación? Pues, mirad por dónde, sí. Y mucho.
En programación, un objeto es cualquier tipo de ente que tenga varias propiedades. Recordemos que, cuando vimos las variables originalmente, dijimos que existían dos tipos de datos, tipos de datos simples (a los cuales pertenecían los enteros, reales, caracteres y booleanos) y tipos de datos complejos (a los que pertenecían las strings y los arrays). Realmente, un "tipo de dato complejo" y un "objeto" es básicamente lo mismo. O casi. Porque aquí entramos con otro nuevo concepto: las clases.
Bien, muchas veces incluso programadores experimentados tienen problemas para diferenciar entre un objeto y una clase (o, aunque lo tenga claro, confunde al usar un término o el otro, como probablemente me haya ocurrido a mí a lo largo del curso). Por eso es que vamos a intentar dejar claro lo que es uno y lo que es otro traspasándolo a la vida real.
  • Para nuestro ejemplo vamos a hablar de coches. ¿Qué es un coche? Un coche es una máquina creada por el hombre que tiene cuatro ruedas, un volante y un motor. Un coche tiene asientos, aunque no siempre tiene la misma cantidad de asientos, y lo mismo ocurre con las puertas. También tiene una matrícula, una marca, un modelo y un propietario. Además, un coche puede arrancar, moverse hacia adelante, moverse hacia atrás, girar, acelerar, frenar y apagarse. Por supuesto, un coche tiene muchas más características, pero para nuestro ejemplo no necesitamos más que eso. De este modo hemos descrito un coche. ¿Qué coche? Ninguno y todos a la vez. Estamos describiendo la idea básica de un coche,. pero no estamos describiendo un coche en concreto. Eso es lo que llamamos una clase.
  • Ahora imaginemos que decidimos darle datos. Nuestro coche, con cuatro ruedas, volante y motor tiene 5 asientos, 3 puertas, su matrícula es 0000-XXX, es un Opel Corsa y pertenece a Paco Hernández Santana (por supuesto, todos estos datos son ficticios). Ahora estamos hablando de un coche en concreto, no es la idea de un coche, sino el propio coche en sí. Es lo que llamamos un objeto.
De este modo, cuando hablamos de una string, estamos hablando de la clase llamada string, que tiene unas determinadas características, mientras que cuando hablamos de "Hola, mundo" estamos hablando de un objeto perteneciente a la clase string.
En programación en muchas ocasiones necesitaremos crear objetos que almacenen determinados datos (como el número de asientos o la matrícula de un coche) o que realicen determinadas acciones (como arrancar o frenar). Y, como posiblemente necesitemos crear múltiples elementos del mismo tipo pero que almacenen distintos datos, necesitaremos crear clases.
Vamos a usar nuestro ejemplo de arriba, el cual no es tan descabellado. Imaginad que estamos creando un juego de coches. Nos encontramos con el hecho de que vamos a tener que programar múltiples coches en nuestro juego. Cada coche tendrá unas características distintas, pero, como ya hemos dicho antes, todos en lo más básico son lo mismo. Por eso debemos comenzar un proceso de abstracción según el que debemos extraer de los coches aquellos datos que sean comunes (el hecho de que tenga cuatro ruedas, un volante y un motor, que tenga asientos aunque no sepamos el número, que sea capaz de arrancar, frenar o girar...) y tener en cuenta aquellos que puedan variar (el número de asientos, la matrícula...). De este modo podremos crear un coche genérico que podremos usar en el juego.
Ahora cada vez que vayamos a crear un coche en el juego, tendremos que darle datos, tal como hicimos antes. De este modo, iremos creando variables que contengan distintos objetos del tipo coche. Al igual que podíamos tener diversas strings cada una distinta en distintas variables, ahora podremos tener distintos coches almacenados en variables. Al hecho de crear un objeto al introducirle datos a una clase se le llama instanciar (de hecho, los objetos pueden ser conocidos también como "instancias de una clase").
De este modo, repasemos el camino para crear un objeto:
  1. Descubrimos que necesitamos múltiples elementos con las mismas características.
  2. Abstraemos de los elementos aquellos datos y acciones que sean comunes.
  3. Instanciamos objetos guardándolos en variables.
Sé que visto así sigue pareciendo muy abstracto y difícil de entender, pero lo que me importa sobre todo esta semana es que hayáis entendido la diferencia entre una clase (abstracta y genérica) y un objeto (concreto y particular). La semana que viene, cuando veamos código entenderemos mucho mejor el resto. Y, como no ha habido práctica, esta semana os libráis de los ejercicios. ¡Pero estudiaos esto bien!

lunes, julio 30, 2012

Desentrañando... Legión de Super-Héroes

En el siglo XXXI la Tierra es sólo una más de los "Planetas Unidos", una organización que reúne a gran parte de los planetas habitables de la Vía Láctea. Los superpoderes no son tan excepcionales en esta época en la que cientos de razas alienígenas conviven día a día. Aún así, tres chicos, tomando como ejemplo las primeras aventuras del superhéroe Superman, cuando actuaba en Smallville bajo el alias de Superboy, deciden montar un "club de superhéroes". De este modo, Cosmic Boy, Saturn Girl y Lightning Lad se convirtieron en los fundadores de la Legión de Super-Héroes.
Gracias a los anillos que les permiten viajar en el tiempo, la Legión viajó al siglo XX para reclutar a Superboy como miembro honorífico. A partir de entonces, un gran número de superseres se fueron uniendo al club: Chameleon Boy, Brainiac 5, Triplicate Girl o Ultra Boy son sólo algunos de los muchos que han formado parte de la Legión. Sin embargo, al ser el futuro tan incierto y haberse modificado tantas veces el multiverso, el origen de la Legión de Super-Héroes y la forma de fundarse ha cambiado en muchas ocasiones, de modo que en alguna ocasión, Superboy no ha tenido nada que ver con ésta.

domingo, julio 29, 2012

The CubesPaper, Número XXXVIII (29/07/2012)

Una semana bastante pobre en noticias. ¿Estarán las editoriales concentradas en las Olimpiadas? Sea como sea, aquí veamos lo que hay:

Posible tercera parte del Hobbit
Peter Jackson se propone alargar para hacer una trilogía.
Más información: Alt1040

Serie animada de Marvel online
Titulada All Winners Squad, su primer episodio ya está disponible.
Más información: ComicsAlliance

Alianza de Batwoman y Wonder Woman
Durante un par de números, la Mujer Maravilla aparecerá en la serie de la vigilante de Gotham.
Más información: ZonaNegativa

sábado, julio 28, 2012

(Reseña de cómic) The New 52: Justice League International #1-6

Entre las 52 nuevas series que DC lanzó el pasado agosto, tres fueron dedicadas a distintas "subdivisiones" de la Liga de la Justicia. La colección Justice League (cuya primera trama ya reseñé) nos mostraba al equipo principal de héroes, Justice League Dark mostraba un grupo de personajes relacionados con la magia, y Justice League International, la colección guionizada por Dan Jurgens y dibujada por Aaron Lopresti, nos presenta una singular formación manejada por la ONU.
Andre Briggs, el director del departamento de inteligencia de la ONU, convence a los líderes mundiales para que le permitan formar un grupo de superhéroes que respondan ante dicha institución, a pesar de estar bastante reticientes de dicha idea. De este modo, Briggs reune a Hielo, Fuego, Vixen, Rocket Red, August General in Iron, el Linterna Verde Guy Gardner, Godiva y el que será su líder, Booster Gold, para enviarlos a una misión de rescate casi de inmediato, mientras la opinión pública sobre el grupo es mala desde el comienzo, al haber tomado la ONU el Salón de la Justicia, un lugar público, para el uso privado de dicho equipo. Además, Gardner se niega a aceptar órdenes de Booster Gold, Batman decide meterse en la misión del grupo "por si las moscas" y nadie en el grupo parece tener un mínimo de disciplina, aún menos intención de trabajar en equipo. Aunque deberán dejar estas diferencias atrás una vez que unos robots gigantes empiecen aparecer en distintos lugares del mundo.
He de reconocer que es una serie bastante simpática, como todas las versiones de este equipo, y sin demasiadas pretensiones. Simplemente un grupo de héroes de segunda categoría (ayudados por Batman) bastante desastrozos por lo general enfrentándose a amenazas que les quedan grande pero que, de algún modo extraño, consiguen derrotar. Desgraciadamente, la historia está demasiado alargada para poder llegar a seis números lo cual acaba haciéndose algo aburrido al volverse un tanto repetitivo en ocasiones. Además, el hecho de incluir a Batman (que, la verdad, abusan mucho de él en los nuevos 52, incluso más que antes), el cual no pega con el resto del grupo, o el hecho de que no den una explicación a por qué la JLA no se apunta a detener al enemigo de turno una vez el equipo de Booster ha demostrado su incompetencia nos deja un sabor de boca medio agrio.
El dibujo es bastante bueno aunque, igual que la historia, sin demasiadas pretensiones. Hace su papel correctamente, un dibujo bastante típico para una serie de superhéroes y con un manejo de la narrativa bastante clásico, sin arriesgar nada.
En resumen, una colección que está bastante bien para pasar el rato y tal vez esbozar alguna sonrisa viendo al equipo más desastrozo de DC. Si sólo la ONU hubiera permitido que Plastic Man se uniera...

viernes, julio 27, 2012

(Reseña de serie) Friends, 5ª temporada

1998 vio el inicio de la quinta temporada de Friends, el ecuador de la serie que aún conseguía mantener sus altas audiencias y a su mismo reparto (y así seguiría hasta el final).
La serie comienza donde nos dejó la última vez, con Ross habiéndose equivocado al decir el nombre de Rachel en su boda con Emily. A pesar de que la boda sigue adelante, esto evidentemente afecta fuertemente en la relación de los dos personajes, por lo que Ross durante toda la primera mitad de la temporada intenta arreglar las cosas con su esposa, la cual empieza a poner condiciones extremas si Ross quiere volver a verla, entre ellas que no vuelva a ver a Rachel jamás. Por otro lado, Chandler y Monica, quienes compartieron una "noche especial" en Londres, se esfuerzan por intentar ocultar la relación que está surgiendo entre ambos de los demás, aunque poco a poco les va siendo más duro.
A pesar de que Ross y Rachel siguen teniendo gran presencia en la serie, la relación de Chandler y Monica llega a eclipsarlos en parte durante esta temporada, una vez más, algo de agradecer, aunque hay momentos que parecen un poco forzados, y la idea de que ambos tuvieran sentimientos el uno por el otro desde antes de lo de Londres me parece muy sacado de la manga (habiendo visto recientemente las anteriores temporadas). Además, lo poco de la relación de Ross y Rachel que tenemos durante esta temporada ya llega hasta el punto de cansino, que si hasta el momento habían sido los personajes menos graciosos de la serie, a este punto ya uno nota la pesadez desde que aparecen en pantalla.
Definitivamente, y aunque la serie sigue siendo divertidísima, las tramas largas cada vez dejan más que desear, además de ser bastante escasas en este caso, y lo que de verdad divierte son las tramas de cada episodio individual.

jueves, julio 26, 2012

Trailer de "Superman: The Man of Steel"

Por fin, tras tanto tiempo, tenemos la primera muestra del nuevo Superman que nos traerán Zack Snider como director y Christopher Nolan como productor el año que viene. Superman: The Man of Steel será un reinicio de la franquicia del último hijo de Kripton y estará protagonizada por Henry Cavill. Veamos lo que nos muestran de momento:


Realmente no nos muestra mucho este trailer, aunque parece que será una película bastante parecida a Batman Begins, mostrándonos una especie de viaje inicial del héroe, tal vez para conocer la extensión de sus poderes o descubrir su origen. El hecho de que estén involucrados los dos nombres anteriores (sobre todo Nolan) y también David S. Goyer (quien produjo la trilogía del Caballero Oscuro) como guionista habla bastante bien de esta futura producción, aunque las imágenes de Superman que supuestamente se han filtrado no me terminan de convencer del todo. Pero bueno, habrá que darles el beneficio de la duda hasta el año que viene. Eso sí, hablando como estamos de un héroe de la importancia de Superman, espero que la película sea equiparable como mínimo a la ya mencionada primera entrega del Batman de Nolan.

miércoles, julio 25, 2012

(Reseña de película) The Amazing Spider-Man

Si la semana pasada reseñábamos la película superheróica más esperada de este verano (Caballero Oscuro: La Leyenda Renace), esta semana le toca el turno a la más temida, The Amazing Spider-Man ("El asombroso Spiderman"). Tras el desastre que fue la Spider-Man 3 de Sam Raimi y, a pesar de que sus 2 predecesoras habían sido geniales, la franquicia fue reiniciada, prescindiendo de todo el equipo de las anteriores películas y poniendo esta vez al frente a Marc Webb (¿os suena el nombre?... a mí tampoco). En esta ocasión los spoilers también son muy probables.
Cuando el huérfano Peter Parker descubre los experimentos que su padre hacía, decide conocer al socio de sus padres, el Dr. Curtis Connors, y le da la solución al problema en que se habían quedado atascados, en una fórmula para ayudar a los seres humanos a regenerar miembros partiendo del ADN de los lagartos. Durante su visita a Oscorp, donde trabaja Connors, Peter es picado por una araña mutada que le concede poderes, por lo que, tras unos conflictos en casa que acaban con la muerte de su tío Ben (su tutor legal junto a su tía May), decide usarlos para detener a los maleantes. Mientras tanto, Connors, sometido a presión por su empresa, acaba experimentando consigo mismo, recuperando el brazo que le falta, aunque con el efecto secundario de convertirse en un monstruo reptiliano con intenciones de reescribir a la especie humana a su imagen y semejanza.
Bueno, ¿por dónde empiezo? La trama es infumable. La sucesión de escenas, diálogos y momentos absurdos comienza casi desde la primera escena de la película y dura hasta el final. Además, tal vez por orgullo o por evitar las comparaciones, Webb ha intentado distanciarse demasiado de las películas de Raimi, pero hasta el punto de que también se distancia de la fuente original, con lo que la muerte del tío Ben y la consiguiente decisión del protagonista de convertirse en un justiciero no tiene ni la mitad del peso que debería tener sino que se queda de modo anecdótico. Sin embargo, y contradiciendo este intento de distanciación, el villano de turno se comporta más como el Duende Verde de la película de Raimi que como el personaje homónimo de los cómics. De hecho, en general, ninguno de los personajes se comporta como su contraparte de las historietas (¡ni siquiera el héroe!), con lo que uno se plantea si el guionista simplemente leyó un par de artículos de Wikipedia para escribir la historia.
El villano no llena. A pesar del vínculo que le dan con el personaje principal, el Lagarto no logra ese nivel de conexión con el héroe que lograron el Duende Verde o el Dr. Octopus (¡o incluso el Hombre de Arena!) en las primeras películas de Raimi, así que queda como un villano anecdótico al que simplemente Spiderman debe parar los pies, pero no tiene ningún momento en el que realmente dé la impresión que debería dar (sobre todo considerando que, como dice Peter en la película, él fue el culpable de su creación). Además, no nos queda nada claro si las nuevas ideas del personaje son producto de la mutación, ya que cuando vuelve a la normalidad sigue con la misma mentalidad pero tras curarse parece ayudar a Spiderman (aunque eso no lo libra de acabar entre rejas), y ni siquiera se nos explica por qué va cambiando de una forma a otra (¿espontáneamente? ¿aumento de adrenalina? ¿se vuelve a inyectar el suero?).
La trama romántica tampoco pinta nada. Durante toda la película es muy forzada y provoca muchas escenas que no vienen al caso. Además, ¿es cosa mía o han intentado sustituir a J. Jonah Jameson con Gwen Stacy? Porque la verdad es que ha sido bastante de mala leche convertir a uno de los personajes más respetados del cómic en un idiota integral como han hecho en esta película.
Y, por supuesto, nos falta hablar de Peter, el cual lleva los humos demasiado subidos para lo que es, humillando a un ladrón de coches sin venir a cuento (vale que Spiderman suela soltar gracias mientras lucha... pero suelen ser producto de los nervios y el miedo, no de chulería), y sé que no es algo que afecte demasiado a la trama, pero... ¿Peter, un skater? ¿En serio?
Aparte de todo esto, el ritmo de la película está completamente descuadrado, algo que, considerando que la mayoría del trabajo previo del director ha sido en videoclips, decepciona bastante, aunque hay que reconocer que las escenas de acción tienen un muy buen ritmo y coreografías. Pero sólo las escenas individuales, la película como conjunto no tiene ritmo de modo que a cada escena que pasas sientes que falta algo en medio o que las cosas ocurren demasiado espontáneas. Si a esto le sumamos la falta de lógica a la hora de usar los poderes del personaje (¿por qué necesitaba las grúas para ir saltando si lo mismo puede hacer a los edificios? o, ¿por qué Connors tenía que sujetarlo para que no cayera si tenía al lado la fachada del edificio al que se podía pegar?), tenemos una película bastante desastroza.
Como digo, las peleas y sus coreografías están bastante bien hechas. También están bastante bien los efectos especiales. A pesar del feo aspecto del Lagarto, la verdad es que está muy bien logrado. No podemos hablar lo mismo de las actuaciones, ya que los actores son, en su mayoría, unos caras de palo, siendo Emma Stone (Gwen Stacy) y Sally Field (tía May) las únicas que parece interpretar algo a lo largo de la película.
Vamos, en conclusión, un desastre absoluto. Una película mal documentada, mal interpretada y peor dirigida. Sólo espero que las malas críticas que está recibiendo se traduzcan en que se vuelva a reiniciar la franquicia, esta vez con un director con un poco más de cabeza. Aunque, considerando cómo va Marvel en el cine últimamente, no me fiaría mucho.

martes, julio 24, 2012

Tutorial de desarrollo web, Parte XLII: Llamada a elementos HTML (II). Bucle for...in

La semana pasada veíamos cómo podíamos llamar mediante JavaScript a un elemento en concreto del documento al usar la función getElementById, la cual, ya que el identificador debe de ser único en nuestra página, nos devolverá el elemento con dicho identificador. Hoy vamos a aprender una función muy parecida a ésta, pero que nos podrá servir en otras ocasiones distintas: getElementsByName.
Recordaremos el atributo name que usábamos en HTML y que casi todos los elementos HTML podían tenerlo, y que tenían diversas utilidades, sobre todo en programación. Pues aquí podemos ver una utilidad, ya que, usando el getElementsByName podremos llamar a aquellos elementos que tengan un name concreto. Sin embargo, a diferencia del identificador, el nombre de los elementos podía repetirse. ¿Cual es el elemento que nos devolverá en este caso?
La verdad es que getElementById y getElementsByName no funcionan exactamente igual. En primer lugar fijémonos que la palabra "element" en el segundo caso está en plural, lo cual ya indica que el segundo nos puede devolver varios elementos. ¿Y cómo pueden en programación devolvernos varios elementos? Mediante un array. ¿O pensábais que no los usaríamos nunca para nada?
Veamos, por ejemplo, el siguiente código:

var redElements = document.getElementsByName("red");
for(var i = 0; i &tl; redElements.length; i++)
{
alert(redElements[i].value);
}

Este código tan simple presenta la siguiente situación: en la variable "redElements" guardamos todos los elementos que tengan el nombre "red" (que, por lo que podemos deducir más abajo, deben de ser "inputs"). De este modo, la variable "redElements" ahora contiene un array de elementos HTML. Mediante un bucle for (otra cosa de la que nos estábamos olvidando, ¿no?) recorremos el array desde el 0 hasta el tamaño del array (sin incluirlo, ya que es el símbolo "menor que", no el "menor o igual que") y vamos sacando su valor a través de un "alert". ¿Difícil? Creo yo que no.
Bueno, ya que estamos aquí, vamos a dejar esto un poco de lado y vamos a ver un poco de teoría básica de programación que hemos ido retrasando. Hemos visto hasta ahora tres tipos de bucles, el bucle while, el bucle do...while y el bucle for, pero lo cierto es que nos queda por ver un último bucle: el bucle for...in.
A diferencia de los anteriores bucles, que podían servir en casi cualquier situación, el bucle for...in (que en otros lenguajes es llamado for each) sólo sirve para recorrer "colecciones", el tipo de objeto al que pertenecen los arrays. De este modo, el anterior código con un bucle for...in quedaría así:

var redElements = document.getElementsByName("red");
for(element in redElements)
{
alert(element.value);
}

Os preguntaréis que qué lógica tiene lo que he escrito. Realmente es bastante sencillo: este bucle, como les digo, el propósito de este bucle es simplificar el recorrer colecciones. Por ello, le decimos, después de la palabra reservada in, que vamos a recorrer el array "redElements". Hasta ahí fácil, ¿no? Ahora supongo que querréis saber que es ese "element" que tenemos añadido.
Para facilitar el recorrer el array, el for...in le da un nombre genérico elegido por nosotros a la posición de array en la que nos encontremos, de modo que podemos usar ese nombre dentro del bucle (sólo dentro del bucle). Podemos considerarlo como una "variable provisional" en la que vamos guardando cada uno de los elementos del array (aunque en realidad sería un puntero más que una variable... pero eso ya estamos hablando de programación avanzada...). De la forma más sencilla posible, tenéis que entender que "element" dentro del bucle será equivalente al "redElements[i]" del anterior fragmento de código, sólo que nos ahorramos tener que usar la estructura de array y lo usamos como si fuera una variable simple (una ilusión ya que sigue formando parte del array).
Y, por ahora, eso es todo. Sé que últimamente los posts están siendo cortos, pero también es cierto que las cosas que vamos aprendiendo cada vez son más complejas, y saturarles con muchas cosas seguidas no es la mejor de las ideas.

EJERCICIO

En el ejercicio de esta semana vamos a ponernos un poco más serios. Vamos a crear cuatro cuadros de texto y un botón. En el primer cuadro de texto (que debe de ser más grande que los otros tres) el usuario deberá escribir su nombre completo (un nombre y dos apellidos) y, al pulsar el botón, el nombre se separará entre los otros tres campos, mostrando uno el nombre, otro el primer apellido y el último el segundo apellido. Los tres cuadros de texto "resultado" deben tener el mismo name entre ellos, mientras que el último deberá tener otro name distinto. Intentar hacerlo con bucle for, bucle for...in y sin bucle.

Y aquí termina otra semana más el tutorial de desarrollo web. ¡La semana que viene, más!

lunes, julio 23, 2012

Desentrañando... Caballero Negro

Dane Whitman, descendiente del Caballero Negro original, Sir Percy de Escandia, descubrió su legado cuando su tío, Nathan Garrett, muriera al haber sido un villano que se enfrentó en distintas ocasiones a los Vengadores usando el apodo de Sir Percy. Whitman, sin embargo, optó por el camino heróico, aunque tardó un tiempo en borrar el legado que su tío le había dejado, aunque acabaría hasta siendo miembro de los Vengadores.
Dane llegaría a encontrarse con el espíritu de Sir Percy, quien le entregaría la Espada de Ébano característica del Caballero Negro, aunque esta espada tenía una "Maldición de Sangre", por la cual cada vez que la espada derramara sangre, su portador iría perdiendo cada vez más la cordura. Afortunadamente, la maldición sería eliminada con la ayuda del espíritu de Sir Percy y del Dr. Extraño, aunque con el tiempo, Dane decidiría usar un arma menos peligrosa para su mente, una espada que proyectaba luz, para, más tarde, recibir equipamiento directamente de Avalon, cortesía de la Dama del Lago que lo proclamó el Pendragón de nuestra era.
La principal aliada del Caballero Negro es la Eterna Sersi, con quien Whitman mantiene también una relación romántica, aunque ha sido bastante accidentada, sobre todo desde que, debido al ataque del villano Proctor, un compañero de Sersi, Ikaris, debió unir mentalmente a ambos individuos en el llamado gann josin para evitar que la Eterna perdiera su cordura por completo.

domingo, julio 22, 2012

The CubesPaper, Número XXXVII (22/07/2012)

En la semana posterior a la Comic-Con todavía siguen llegando noticias de las distintas editoriales. Veamos lo que nos ha traído esta semana:

Nueva película de animación de "Dragon Ball"
En 2013 se estrenará una nueva película de Dragon Ball en la que Akira Toriyama estará muy involucrado.
Más información: ActualidadComic

Reinicio de "Cyber Force"
Marc Silvestri reiniciará esta serie a partir de octubre.
Más información: Newsarama

Anunciadas las próximas temporadas de series Marvel
Marvel anuncia sus proyectos de nuevas temporadas y series para el próximo año.
Más información: ComicsAlliance

Anunciadas cinco series de "Marvel NOW!"
A través del nuevo personaje "Nick Furia Jr.", Marvel va anunciando su nuevo proyecto.
Más información: ZonaNegativa

Juego de la JLA para iOS
Justice League: Earth's Final Defense saldrá en agosto.
Más información: ComicsAlliance

Confirmada película de "Lobo"
El famoso antihéroe de DC será interpretado por "La Roca".
Más información: ComicBookResources

sábado, julio 21, 2012

(Reseña de película) Caballero Oscuro: La Leyenda Renace

Sí, sé que ya ayer reseñé una película, pero es que anoche tuve el placer de ver esta tan esperada película y no he podido evitarlo: ¡tengo que reseñarla! Como ya sabréis muchos, esta película cierra la trilogía que Nolan comenzó en 2005 con Batman Begins y continuó en 2008 con El Caballero Oscuro. Repitiendo la mayoría del reparto llega esta última entrega, conocida en su país de origen como The Dark Knight Rises (siendo una traducción bastante más acertada algo como "El Caballero Oscuro se alza"). Recomendaría no seguir leyendo en caso de no haber visto la película por fuerte riesgo de spoilers.
Ocho años han pasado desde el asesinato de Harvey Dent. La conocida como "Ley Dent" ha limpizado las clales de Gotham City, pero no todo han sido alegrías para el joven filántropo Bruce Wayne, el cual, destrozado por la muerte de Rachel Dawes, su amiga de la infancia e interés romántico en las dos entregas anteriores, se ha encerrado en su mansión y ha colgado la capa de héroe. Sin embargo, un nuevo mal llega a la ciudad: un tipo enmascarado respondiendo al nombre de Bane que, según las investigaciones de Alfred, fue expulsado de la Liga de las Sombras de Ra's al Ghul por violento, y que intenta sembrar el caos en Gotham tras haber sido contratado por el empresario John Daggett. Además de sus aliados habituales, Wayne contará con la ayuda del joven agente de policía John Blake, una misteriosa y exótica empresaria de nombre Miranda Tate y una ladrona de joyas cuyo "traje de batalla" lleva atributos de gato llamada Selina Kyle.
Hasta el momento, las terceras entregas de películas de superhéroes habían sido bastante desastrozas: Superman IIIBatman Forever, X-Men: The Last Stand, Spider-Man 3... Aunque Nolan es un director que promete mucho, la maldición del 3 estaba ahí, así que fuí un tanto temeroso a ver la película. Y he comprobado que mis miedos no tenían ningún fundamento: The Dark Knight Rises es una película perfecta no sólo como una película más de Batman, sino que cierra perfectamente la saga de Nolan, cerrando tramas que ni siquiera sabíamos que estaban abiertas y poniendo al personaje completamente contra las cuerdas hasta el punto de que durante la segunda mitad de la película nos mantiene con los ojos fijos en la pantalla completamente absortos por las situaciones que se van dando.
Las comparaciones en seguida llegan y no, la película no supera a la anterior, pero es que los papeles de Heath Ledger y Aaron Eckhart fueron demasiado buenos. Pero, aún así, los nuevos villanos de esta película son geniales. Las actuaciones todas vuelven a ser magníficas: Anne Hathaway se comporta como la mejor Catwoman que he visto hasta el momento en acción real, mientras que Tom Hardy redime completamente la versión cinematográfica de Bane, pasando del personaje patético que vimos en Batman y Robin a ser uno de los personajes más temibles que podamos echarnos en cara. Y mucha atención con un par de sorpresas que hay con dos personajes de la película (aunque creo que podréis sospecharlo desde bastante pronto... ¡nosotros lo hicimos!).
De los efectos y de la ambientación creo que no hace falta ni que hable, ya que sigue completamente en la misma línea de las dos anteriores, lo cual convierte la película en una auténtica joya. Se nota en el ambiente que Gotham es una ciudad ahora mucho más segura que en las anteriores, algo que choca un poco a los fans de los cómics, considerando que Gotham siempre será para nosotros una ciudad de lo más peligrosa, pero que cuadra con la historia. Además, ver la evolución del personaje de Bruce Wayne, mucho más sombrío en esta película, hace plantearnos si Rachel no habrá ocupado el lugar de Jason Todd (ambos fueron asesinados por el Joker y sus muertes provocaron un fuerte incremento en la paranoia de Batman... ¡incluso al final de la primera parte usó un programa parecido al del Hermano Ojo!).
Concluyendo, una de las sagas de superhéroes mejor llevadas y que, aunque me apena que haya acabado, me alegro de que Nolan haya decidido finalizarla antes de que se echara a perder, además con un final que pone muy difícil retomar la franquicia (vamos, que la próxima película de Batman, que sabemos que probablemente con el tiempo haya, tendrá que ser otro reboot).

viernes, julio 20, 2012

(Reseña de película) Superman vs. The Elite

En junio de este año se publicó una nueva película de las "Películas Animadas Originales del Universo DC", en concreto la décimocuarta, basada en la saga de Superman What's so funny about Truth, Justice and the American Way? ("¿Qué es tan divertido en la Verdad, Justicia y el Estilo de Vida Americano?") por Joe Kelly, aunque la película se llamó simplemente Superman vs. The Elite.
Después de que Superman derrote una vez más al Atomic Skull y lo entregue a las autoridades, se forma un debate sobre si Superman debería tomar un papel más activo a la hora de decidir el destino de sus enemigos y tomarse la justicia por su mano. Aunque Superman se niega a dicha posibilidad, un nuevo grupo de superhéroes, encabezados por un telépata conocido como Manchester Black, sí está dispuesto a mancharse las manos.
No he leído el cómic original, pero Joe Kelly es un autor en el que confío, y el saber que, además, escribió el guión para esta película, me da también bastante confianza de que sea bastante fiel. Pero, aparte de ese dato e independiente de si es fiel o no al cómic, la película tiene una historia espectacular no sólo al mostrar un típico dilema de los héroes sobre su implicación con la sociedad, sino que presentan a unos personajes de lo más interesantes (basados, para aquellos que no lo hayan pillado, en el grupo The Authority que por este tiempo no compartía universo con el Supes), y la trama es bastante buena y se desarrolla muy bien, salvo por la actitud al final de la película de uno de los personajes, un chaval llamado Terrance.
El dibujo no me llama especialmente, los personajes están demasiado caricaturizados para mi gusto, aunque la animación, bastante buena, arregla bastante esto.
Definitivamente, Bruce Timm no decepciona con sus proyectos, así que esta es otra joya bastante interesante. Ahora esperando al próximo proyecto, la famosa novela gráfica de Alan Moore The Dark Knight Returns (mejor conocido en España como "El Regreso del Caballero Oscuro").

jueves, julio 19, 2012

(Reseña de serie) Friends, 4ª temporada

Cuarta temporada de Friends y la cada vez mayor popularidad de la serie indicaba que no acabaría pronto. Una vez más repitiendo reparto y cada vez con más presupuesto, incluso para contratar actores extranjeros e incluso filmar en el extranjero.
Aunque Ross y Rachel vuelven a estar juntos al comienzo de temporada, la pretensión de Rachel de que Ross asuma toda la culpa de su ruptura les lleva a romper una vez más, por lo que ambos acaban encontrando un nuevo interés romántico, Ross en Emily y Rachel en Joshua, aunque esta última nunca llega realmente a olvidar a su ex. Por su lado, Monica y Phoebe intentan montar una empresa de catering hasta que a Monica le ofrecen un trabajo en un restaurante al que reseñó con muy mala puntuación, y Joey empieza a salir con una chica de la que Chandler se enamora. Además, el hermanastro de Phoebe, que no puede tener hijos con su mujer y necesitan a alguien que les preste su útero, pide a Phoebe que sea la "madre de alquiler".
A partir de este punto, la serie comienza a volverse algo repetitiva respecto a la relación de Ross y Rachel. El hecho de que los dos parezcan sentir algo por el otro pero no terminen de reconocerlo nos hace sentirnos como en las primeras temporadas, y el hecho de que hayan "cortado" tres veces en sólo dos temporadas (aunque por volumen de episodios, es en menos de una temporada) aburre bastante. Por suerte, las otras tramas de la serie ayudan a tapar dicha falta de originalidad. Además, la finale de esta temporada es tan o tal vez más espectacular que la primera, no sólo por su cliffhanger, sino por el presupuesto dejado al buscar a algunas estrellas británicas ya que el doble episodio se desarrolla en Londres. Destacar sobre todo la actuación de Hugh Laurie en el último episodio como compañero de viaje de Rachel, en un papel que parece predecir su futura serie estrella, House M.D.
Una serie magnífica aunque a esta altura se puede intuir el "salto al tiburón" que todas las series, al alargarse mucho, acaban teniendo. Sin embargo, eso no quita que cada episodio siga siendo divertidísimo.

miércoles, julio 18, 2012

(Reseña de cómic) The New 52: Batman #1-7

Seguimos con las reseñas de las 52 nuevas series que DC ha comenzado desde el número 1 el septiembre pasado, tocando ahora el turno de la serie homónima del Cruzado de la Capa, la cual ha tenido el privilegio de mostrarnos el inicio del primer evento crossover de la editorial, el Night of the Owls ("Noche de los Búhos"). De hecho, esta primera saga se titula Batman: The Court of Owls ("Batman: La Corte de los Búhos") y consta de los primeros siete números de la serie, por Scott Snyder y Greg Capullo (por favor, no hagan las típicas bromas).
Mientras Bruce Wayne planea remodelizar la ciudad de Gotham, siendo apoyado por el candidato a alcalde Lincoln March, junto a un cadáver sin identificar encuentran una nota de aviso de que la próxima víctima del asesino será el joven filántropo. Todo parece indicar que los autores del asesinato y de la amenaza son un grupo que controla Gotham desde las sombras llamado la "Corte de los Búhos", conocidos sólo por una rima infantil, pero Batman se niega a aceptar que dicha corte exista en realidad.
Sinceramente, esta serie me ha parecido un desastre. Por un lado por un montón de escenas completamente innecesarias (la misma escena inicial) y, por otro lado, por el hecho de que da más vueltas que una peonza. En muchas ocasiones parece que se han añadido cosas para intentar alargar la historia (los números 5 y 6 se podrían haber concentrado en un único número) y encima a la hora de la verdad se revela bastante poco. Además, casi todos los cliffhanger de cada episodio, bastante emocionantes la mayoría, son casi completamente ignorados en el siguiente episodio o solucionados de una manera bastante insustancial, de modo que se queda un tanto frío. Y además, con esta serie ocurre lo mismo que ocurría con Batwoman y Animal Man, la trama no se acaba. De hecho, no sé por qué consideran un "cierre" el séptimo episodio, ya que incluso yo me quedé sorprendido y tuve que revisar en par de ocasiones para asegurarme de que, de hecho, era el último episodio de la trama. Habrá que leerse el evento crossover (que ocurre principalmente en los siguientes números de esta serie, pero también hay que pasearse por otras series del murciélago... e incluso algunas de personajes completamente ajenos).
Sin embargo, tengo que reconocer que, en los tiempos actuales en que nos cuesta mucho aceptar nuevos villanos para personajes clásicos, esta Corte de los Búhos me está pareciendo un villano bastante interesante y que debería mantenerse en las series del murciélago.
El dibujo de Capullo tampoco termina de convencer del todo. No es que sea un dibujo malo, lo contrario, es bastante bueno, pero su criterio a la hora de hacer los dibujos es un tanto extraño, siendo muy simple en algunas ocasiones, o dibujando cosas con bastante poco sentido (que las cicatrices de Dos Caras pasen por encima de su pelo no tiene mucho sentido).
Una trama escrita única y exclusivamente como introducción a la que viene a continuación, que probablemente sea necesaria para entenderla, y a lo mejor la siguiente es buena, pero que es una lástima que no se haya tratado mejor.

martes, julio 17, 2012

Tutorial de desarrollo web, Parte XLI: Llamada a elementos HTML (I)

Bien, como hoy he estado enfermo no he tenido tiempo de escribir mucho, pero al menos voy a intentar dejaros algo nuevo que ir mirando.
Recordaréis que, cuando vimos los identificadores de HTML, dije que serían muy útiles para distintas cosas. Además de haberlos podido referenciar mediante los enlaces de HTML y las instrucciones de CSS, en JavaScript también nos van a ser muy útiles estos identificadores, y eso es gracias a la función getElementById.
Esta función, como su nombre indica, nos llama a un elemento HTML en concreto, aprovechando que las "id" son únicas, y de esta forma podemos trabajar con dicho elemento. Por ejemplo, imaginemos que tenemos la siguiente etiqueta HTML.

<input type="text" id="username" />
<button>Mostrar nombre</button>

Bien, estaría bastante bien que, al pulsar en el botón que hemos creado, apareciera un "alert" con el contenido del "input". Sin embargo, eso, de momento, no sabemos hacerlo. Pero hoy aprenderemos. Para lograrlo vamos a crear la siguiente función:

function mostrarNombre()
{
alert(document.getElementById("username").value);
}

"¿Qué has hecho ahí?" me preguntaréis. Bueno, vamos por partes, antes que nada, incluyamos en el "button" el siguiiente atributo de evento:

<button onclick="mostrarNombre()">

Y, de momento, podemos ir comprobando que funciona. Pero, ¿cómo funciona?
Esto es bastante simple. Supongo que el crear una función nueva o el "alert" no será nada extraño para nadie a estas alturas, así que nos concentraremos en el contenido del "alert":
  • En primer lugar llamamos al objeto "document", ¿lo recordáis? Sí, era al que llamábamos a la hora de mostrar algún texto en pantalla (document.write("Hola mundo");). Lo cierto es que el objeto "document" (ya hablaremos más adelante de lo que son exactamente los "objetos") representa al archivo HTML entero, así que contiene todo tipo de funciones referentes al documento, la ya tan manida "write" es sólo un ejemplo, y en este tema estamos viendo otra.
  • Esta es la parte más importante, la función "getElementById". Como veis, es una función de "document" que nos devolverá un elemento HTML en concreto, aquel que tenga la "id" que se mencione (o el primero que encuentre, en caso de que haya más de una, aunque si hay más de una significa que vuestro código HTML es incorrecto). Entre los paréntesis tenemos que incluirle la String del nombre del identificador.
  • El "getElementById" en realidad nos devuelve el elemento en cuestión completo, por lo que, si lo que queremos mostrar es el valor dado al "input" en este caso, podemos llamar al atributo "value". Sólo aquellos elementos HTML que tengan atributo "value" lo tendrán también en JavaScript, y eso mismo ocurre con cualquiera de los otros atributos HTML (o la mayoría, no los he comprobado todos).
De este modo, mediante esa función le estamos pidiendo que nos muestre en un "alert" el valor del elemento con identificador "username".
Si hemos incluido lo antes escrito en un "form" nos daremos cuenta de que la página se recarga tras pulsar el botón. Existen formas de prevenir esto, pero de momento les recomiendo quitar el "form" para que no les recargue la página, ya que para evitar eso deberíamos trabajar con el evento "onsubmit" (una pista, normalmente si el evento "onsubmit" recibe un valor booleano "false", no recarga la página... pero ya lo veremos más detenidamente otro día).
Como les digo, lo lamento mucho por el post corto de esta semana, pero, en serio, estoy febril hoy y no me concentro muy bien, así que poco les puedo explicar, pero algo tenía que dejarles, así que, de paso, les dejo un ejercicio bastante sencillo.

EJERCICIO

Esta semana el ejercicio consistirá en crear dos cuadros de texto y un botón, y hacer que, al pulsar en el botón, el texto de ambos cuadros de texto se intercambie. Este es, en realidad, otro ejercicio clásico, que es un poco (muy poco) más difícil de lo que parece a simple vista.

Y eso, lamentándolo una vez más, me despido por hoy. ¡Hasta la semana que viene (los que sólo sigáis este cursillo)!

lunes, julio 16, 2012

Desentrañando... Jonah Hex

Nacido en 1838 e hijo de un padre alcohólico, el que se convertiría en el mercenario Jonah Hex fue vendido a una tribu apache a los 13 años. Pronto se ganó la aceptación de los miembros de la tribu al salvar al jefe de un puma, adoptándolo éste como su hijo, aunque el hijo de sangre del jefe, Noh-Tante, tendría conflictos con su nuevo hermanastro, sobre todo cuando ambos se enamoraran de la misma mujer, lo que acabaría llevando a que, dándolo por muerto, los apaches abandonaran a Hex. Cuando tiempo más tarde volvieran a encontrarse, Hex tendría un duelo con Noh-Tante, que acabaría en la muerte del hijo del jefe, pero las trampas de éste, que obligaron a Hex a usar un cuchillo (algo prohibido por las reglas del duelo), llevaría a los apaches a marcarlo con lo que llaman "la marca del demonio", una deformidad que, desde entonces, es el sello característico del personaje.
Hex participó en la Guerra Civil Americana ayudando a los Confederados, aunque su entrega ante la Unión al entender que no vencerían llevaría a sus compañeros a creer que los había traicionado (en parte gracias a distintas estratagemas de la Unión), por lo que esos compañeros serían, con el tiempo, algunos de los rivales a los que Hex debería enfrentarse.
Finalmente, acabada la guerra y con la marca del demonio adornando su rostro, Hex decidiría convertirse en un cazarrecompensas, siendo muy popular por lo implacable y despiadado que era, aunque siempre respetando un gran código de honor personal. A lo largo de su carrera se tuvo que enfrentar a distintos villanos como Quentin Turnbull, el padre del que fue el mejor amigo de Hex en la Confederación (asesinado por la supuesta "traición" de Hex) o "El Papagayo", un bandido mexicano con quien Hex se las ha visto en muchas ocasiones.
Pero las aventuras de Hex no se reducen al siglo XIX, sino que, en muchas ocasiones, debido a distintas criaturas con tecnología avanzada, ha viajado por el tiempo al siglo XX, donde ha conocido a muchos de los héroes que pueblan dicha época, o incluso a entrado el siglo XXI, donde vivió una época debido a las manipulaciones de un villano llamado Reinhold Borsten, donde incluso se unió a una banda de moteros llamada las "Parcas de la Carretera".
Hex murió en 1904 asesinado por la espalda, dejando una esposa, una nativa americana llamada Pájaro Alto, y un hijo, Jason Hex, aunque éste era hijo de una esposa anterior, Mei Ling. Sin embargo, y aparte de sus viajes al futuro, su vida ha sido una influencia de distintas maneras para los héroes que han aparecido más adelante.

domingo, julio 15, 2012

The CubesPaper, Número XXXVI (15/07/2012)

Bueno, esta semana con la San Diego Comic-Con International hay bastantes noticias, aunque hay que reconocer que son Marvel los que más cosas interesantes han anunciado. Pero no sólo hay noticias sacadas de dicha convención. Ahí van:

Se anuncia juego de Masacre
El mercenario bocazas protagonizará su primer juego en 2013.
Más información: ComicsAlliance

Se confirman proyectos cinematográficos de Marvel
A los ya conocidos se unen Ant-Man y Guardians of the Galaxy.
Más información: ComicsAlliance ZonaNegativa

Director para el reboot de los 4 Fantásticos
El encargado de llevar de nuevo a la gran pantalla a estos héroes será Josh Trank.
Más información: ComicsAlliance

Se anuncia nueva miniserie de Ultimate Iron Man
Esta historia marcará el debut del Mandarín del Universo Ultimate.
Más información: Newsarama

Nuevos actores para la nueva película de Lobezno
Jessica Biel y Will Yun Lee interepretarán a Viper y el Samurai de Plata respectivamente.
Más información: ComicBookResources ZonaNegativa

Nueva miniserie de Sandman
Neil Gailman retoma las andanzas de su popular universo.

Stan Lee narrará los orígenes de los Vengadores
El popular creador dará su voz para los libros digitales Avengers Origins.
Más información: ComicBookResources

Anunciada la nueva entrega de la saga "Batman: Arkham"
Será una precuela y presentará a la Liga de la Justicia.
Más información: ComicsAlliance ComicVine

Nueva serie de Sailor Moon
Las chicas guerreras regresarán a las pantallas japonesas en 2013.
Más información: Alt1040

Anuncio de la salida de Windows 8
El nuevo sistema operativo de Microsoft saldrá a la venta en octubre.
Más información: Alt1040

sábado, julio 14, 2012

(Reseña de serie) Friends, 3ª temporada

Lamento que ayer haya salido publicada durante unos segundos la reseña de la 4ª temporada, fue un error, esa reseña saldrá la semana que viene.

Siguiendo con la reseña de esta popular serie, llegamos a la tercera temporada, la cual, como toda la serie, mantiene a todo el mismo reparto a los que va añadiendo nuevas situaciones, cada vez más aprovechando el hecho de ya conocer bien a todos los personajes para ir dándoles tramas a cada uno.
La temporada comienza tomando dos temas de la finale de la anterior: la ruptura de Monica y Richard y el reencuentro de Chandler y Janice. La primera no lleva para nada bien la situación, mientras los segundos, ya que Janice se está divorciando con su marido, están bastante contentos. Por otro lado, Rachel deja el trabajo en el café para definitivamente buscar algo relacionado con la moda, aunque las condiciones en que lo encuentra no agradan a Ross, quien se pasa el día celoso de un compañero de su novia. Mientras tanto, Phoebe sigue en la búsqueda de su familia al conocer a su hermanastro Frank Jr., Joey empieza a trabajar en una obra de teatro en la que se enamora de una compañera y Monica conoce a un millonario que intenta enamorarla.
Al igual que ocurrió con la segunda temporada, esta temporada cada vez mejora más gracias a, como decía antes (y en posts anteriores), el hecho de que ya conozcamos los carácteres e intereses de los personajes. Y el hecho de que durante los primeros episodios de la temporada no tengamos tanto Ross y Rachel como en las primeras temporadas es de agradecer, dejando más espacio para otros personajes, aunque no tardan en volver a tomar protagonismo, ofreciendo uno de los episodios más significativos de toda la serie ("El de la mañana siguiente", continuación de "El de cuando Ross y Rachel se toman un descanso", frase que nos acompañará hasta el final de la serie). Pero lo más importante es que a lo largo de esta temporada los personajes parecen evolucionar mucho más que en las anteriores. Y la finale, aunque no gran cosa, tiene un momento final muy estelar en el que nos dejan con la intriga de la decisión de Ross (de hecho, desde que termine de escribir esto iré a ver el siguiente episodio porque no recuerdo lo que pasaba).
Supongo que no hace falta que hable más de actuaciones, aunque creo que merece destacar la anécdota del episodio "El del campeón de lucha definitivo", donde Billy Crystal y Robbin Williams hacen un cameo sólo por el hecho de que estaban por la zona cuando se estaba rodando el episodio, y les ofrecieron grabar una pequeña escena, la cual ni siquiera estaba en el guión original (de hecho, podemos ver el episodio sin dicha escena y no pasaría nada). También destacar cómo Gunther, el encargado del Central Perk, empieza a recibir protagonismo en esta temporada, o se unen otros dos "personajes" al reparto habitual: el pollo y el pato que Joey y Chandler adoptan.
Una temporada importantísima y decisiva en la serie, sin duda ninguna. Me cuesta imaginar cómo aguantaron durante siete temporadas más (como dije en el primer post, he visto los episodios muy salteados y es la primera vez que la estoy viendo en orden).

viernes, julio 13, 2012

(Reseña de cine) Men in Black II

El éxito de la película Men in Black de Barry Sonnerfeld le ganó unos años más tarde, en 2002, una secuela, recuperando a la mayoría del equipo para esta segunda película, que tuvieron algún problema debido al atentado de las Torres Gemelas en septiembre de 2011.
Cinco años después de los acontecimientos de la anterior película, el agente J se ha convertido en un agente respetado y al mismo temido en el MiB. Sin embargo, cuando una alienígena llamada Serleena aparece para intentar conseguir la Luz de Zartha, la cual supuestamente habían hecho salir del planeta décadas atrás. Sin embargo, el agente que se encargó de dicha misión fue K, quien fue neuralizado al final de la anterior película, así que la única manera de solucionar el embrollo es hacerle recuperar la memoria.
Esta segunda película, en mi opinión, es mucho más entretenida que la anterior. El poner al personaje de Will Smith intentando ir de sobrado frente a Tommy Lee Jones, quien, una vez que vuelve, demuestra por qué es el agente del MiB más venerado, es muy divertido. Además, la historia guarda la misma esencia de la primera parte, sin volverse especialmente repetitiva, además de aumentar el papel de personajes que en la primera parte aparecieron bastante poco, como los Gusananos, Frank el perro, o el agente Z (jefe de los Men in Black).
Las actuaciones siguen en la misma línea que en la primera parte, muy buenas todas, e incluso la nueva incorporación al reparto, Rosario Dawson, lo hace mucho mejor que la chica de la primera parte. Por desgracia, los efectos especiales es lo que menos ha mejorado, siendo aún bastante cutres.
Una más que digna sucesora de la primera película, que, de hecho, en mi opinión, fue capaz de superar a su predecesora. Ahora me queda ver la tercera, la cual me tiene bastante intrigado.

jueves, julio 12, 2012

(Reseña de cómic) The New 52: Animal Man #1-6

Seguimos repasando las primeras tramas de los nuevos 52 de DC Comics. Tras haber visto la Justice League (con su trama "Justice League: Origin"), Batwoman (Batwoman: Hidrology) y Action Comics (Superman and the Men of Steel), ahora llega Animal Man con su trama Animal Man: The Hunt, que duró los seis primeros números de la serie y ha sido escrito por Jeff Lemire y dibujado por Travel Foreman y Dan Green.
Tras un tiempo de inactividad como superhéroe durante el cual incluso ha grabado una película como actor protagonista, Buddy Baker echa de menos sus aventuras como Animal Man, hasta que un día descubre que su hija Maxine ha "heredado" sus poderes y le anuncia que unos tales "ellos" vienen a atacarles, por lo que la niña guía a Buddy hasta lo que llama el "Lugar Rojo", donde Buddy descubrirá mucho más sobre sus propios poderes y los de su hija.
La verdad, cuando empecé a leer esta saga conocía bastante poco del personaje. Tampoco conozco mucho ahora, pero lo que me ha parecido interesante es que, sabiendo casi nada, he podido seguir sin mucho problema la trama, lo cual habla muy bien del trabajo de Lemire. La trama, además, se hace interesante y te sumerge en la situación en que se encuentran, mostrando a unos personajes muy reales, aunque el hecho de que tras seis números se nos revele que esta "primera trama" es sólo una introducción donde se quedan todas las tramas abiertas no gusta tanto, sobre todo para los que se hayan comprado el tomo recopilatorio. Pero se perdona por lo bien escrita que está la historia (que de veras tengo ganas de seguir leyendo, aunque sospecho que la siguiente trama será un crossover con "La Cosa del Pantano", más que nada porque lo dicen casi literalmente).
El dibujo también es muy acorde con la historia, siendo todo lo grotesco y perturbador que esta trama pide (ya que han vuelto a tomar el tono de terror para esta serie), aunque esto provoca que en determinados momentos las imágenes sean confusas, además de que el mantener el estilo grotesco incluso en las escenas "tranquilas" provocan una sensación de agobio demasiado fuerte, así que tal vez los dibujantes deberían controlarse un poco.
De momento, el mejor de los cómics de los nuevos 52 que he reseñado. Tiene un par de pequeños problemas, pero definitivamente es una serie que promete mucho.

miércoles, julio 11, 2012

Tutorial de desarrollo web, Parte XL: Eventos (II)

¡Hola! Esta semana, de forma inusual, este curso se publica ewl miércoles en lugar del martes, debido a que ayer era el "cumpleaños" del blog y, como tal, había que "celebrarlo". Pero aquí estamos de vuelta para seguir el tema tal donde lo dejamos la semana pasada, aprendiendo los eventos en JavaScript.
La semana pasada aprendimos lo que eran los eventos y conocimos algunos de ellos, los eventos de ratón. Esta semana vamos a aprender más eventos distintos, pero para los siguientes eventos, probablemente necesitamos rescatar uno de los elementos que aprendimos en el curso de HTML y que, sin embargo, hasta el momento nos ha sido bastante inútil: los formularios.
Recordaréis que, durante unas cuantas lecciones, aprendimos distintas etiquetas HTML que nos servían para crear un formulario. Sin embargo, a pesar de poder crear cajas de texto, casillas para marcar y botones (entre otras cosas), estos elementos eran completamente decorativos y no llegaban a servir para absolutamente nada. Por suerte, eso cambiará a partir de hoy, ya que, usando la etiqueta input, vamos a aprender los eventos de teclado.
Para ello creemos una etiqueta "input" de la siguiente manera:

<input type="text" name="texto" onkeypress="javascript:alert('Has pulsado.');"/>

Aunque no 100% necesário, recordemos que lo normal es que los elementos de formulario se encuentren dentro de un elemento form. Ahora le vamos a ir añadiendo los siguientes eventos:
  • onkeypress o onkeydown: Estos dos eventos, a diferencia de lo que ocurría con el ratón, no tienen ninguna diferencia entre ellos. Ambos ocurren si el usuario pulsa una tecla mientras tiene seleccionado el elemento (en este caso el "input") o si el usuario, teniendo una tecla pulsada, entra en dicho elemento. En definitiva, siempre que el teclado interactúe con un elemento con uno de estos dos eventos, se activará.
  • onkeyup: Muy parecido al anterior, sin embargo sólo funciona cuando el usuario suelta la tecla estando dentro del elemento. O sea, el usuario puede seleccionar el elemento y pulsar una tecla y mantenerla pulsada. Si el usuario sale de dicho elemento sin haber dejado de pulsar la tecla  (por ejemplo, haciendo click fuera), el evento no se ejecuta. En los demás casos, funciona igual que los otros dos eventos.
Realmente, de teclado sólo existen estos tres eventos (aunque con el tiempo comprobaremos que se puede dar mucho juego con estos eventos, pero tiempo al tiempo). Algo bastante simple, ¿no? Por eso, ahora vamos a pasar a ver los siguientes eventos: los eventos de formulario.
  • onfocus: Este evento se ejecutará mientras el elemento del formulario en cuestión esté seleccionado. Por ejemplo, que entremos dentro de un cuadro de texto.
  • onblur: Casi el contrario de "onfocus", este evento se activa justo en el momento en el que abandonamos dicho elemento para seleccionar otro (o no seleccionar nada).
  • onchange: Este evento, que servirá para los select, los input y los textarea, se activará en el momento en el que interactuemos con el elemento del formulario en cuestión, modificándolo (véase: cambiando el texto o modificando la selección).
  • onreset: Este evento sólo se podrá usar en la etiqueta form y para que se active deberemos haber hecho un input de tipo reset. De este modo, si el usuario pulsa dicho botón, este evento se activará.
  • onsubmit: Este último evento, al igual que en el anterior, sólo pertenece a la etiqueta form y se activará cuando se pulse un input de tipo submit dentro del formulario.
De este modo, nuestros formularios empiezan a tener un poco más de sentido, aunque todavía, como podréis comprobar, poco podremos hacer con ellos. Pero algo se podrá hacer, y, como no quiero hacer un post demasiado denso con demasiadas cosas, mejor paramos aquí y pasamos a hacer un ejercicio:

EJERCICIO

En esta ocasión vamos a coger el archivo que hicimos en en el ejercicio de la parte 16 (aquí podéis encontrar el código) e incluirle eventos que suelten alert: los input de tipo radio y checkbox deberán mostrar cuál casilla se ha activado (o desactivado) al clickar sobre ellos. Los campos de texto deberán avisar cuándo se escriba algún texto en él, y los botones (reset y submit) deberán avisar de qué acción están realizando.

Y eso, de momento, es todo. La semana que viene empezaremos a tratar la información con la que trabajamos en los formularios. No os ilusionéis demasiado, hasta que no veamos PHP los formularios no serán completamente operativos, pero algunas cosas interesantes podemos hacer en JavaScript.

martes, julio 10, 2012

¡Un año de The CubeBlog!

Sí, señores, el 10 de julio de 2011 publiqué aquel post titulado "¡Hola de nuevo!" en el que reiniciaba por completo el anterior caótico blog y empezaba a escribir posts completamente nuevos. Y, a lo largo de este año (que, por cierto, es bisiesto), todos los días ha habido un nuevo post en esta página para todos aquellos que me quieran seguir.
Este año ha visto cómo el blog ha ido evolucionando. En un principio escribía reseñas de distintas cosas (sobre todo cómics) junto a noticiias o mi sección "Cómics históricos" de una forma bastnte aleatoria. Luego fueron naciendo las secciones semanales (el tutorial del Cubo de Rubik, más tarde sustituído por el tutorial de desarrollo web; la historia de los cómics, sustituída por "Desentrañando..."; "The CubesPaper"; etc.) dejando pocos días para el caos (que no ha sido tan caótico desde que fueron naciendo estas secciones).
Gracias al (y por culpa del) blog he visto y leído muchas películas y cómics que antes no conocía, todos ellos para ir dándoles algo nuevo diariamente, he estado mucho más pendiente de la actualidad del cómic y, en parte, de los videojuegos y del cine para siempre intentar traeros aquello novedoso que me atrayera, y la verdad, ha sido una experiencia de lo más divertida. Aunque lo que más me ha gustado siempre es comprobar cómo mis posts no se quedan en simples palabras escritas en una página perdida de internet, sino que las visitas cada vez aumentan más, lo cual, una vez más les agradezco mil veces.
Y es por todas estas razones que, de momento, pienso seguir con el mismo ritmo de publicación. No sé cuánto duraré ni si aguantaré el ritmo durante mucho más, pero lo cierto es que, de momento, seguiréis viendo posts todos los días a las 9 de la noche (más o menos) aquí.
Quería hacer algo especial para este "cumpleaños", pero al final no se me ocurrió qué, aunque tal vez en estos días me dedique a rediseñar la plantilla, así que si, en unos días, no podéis acceder al blog por unas horas o accedéis y véis una página aparentemente distinta, ¡no os alarméis! Sigue siendo The CubeBlog.
¡Un saludo y gracias por el apoyo!

lunes, julio 09, 2012

Desentrañando... Ms. Marvel


Carol Danvers era la jefe de seguridad de una importante instalación de la NASA hasta que tuvo la mala suerte de verse envuelta en la guerra Kree-Skrull, descubriendo que su compañero, el doctor Walter Lawson, era en realidad un alienígena de nombre Mar-Vell, y siendo secuestrada y reciviendo poderes que no se manifestarían hasta unos meses después.
Habiéndose convertido en una escritora tras renunciar a su puesto, Carol descubriría una variedad de poderes que hacían su físico parecido al de un guerrero Kree, por lo cual la chica decidiría convertirse en la heroína Ms. Marvel, la cual llegó incluso a formar parte de los Vengadores. Sin embargo, después de que el villano "Marcus" la secuestrara engañando a todos los Vengadores, la heroína se enfadaría con el resto del equipo por haber creído las mentiras del villano.
Un enfrentamiento con la mutante Pícara provocó que Carol perdiera sus poderes y sus recuerdos, los cuales serían parcialmente devueltos por el Profesor-X, por lo que la heroína empezó a ayudar al equipo de mutantes que este lideraba, hasta que unos aliens conocidos como "el Nido" le otorgaran inintencionadamente nuevos poderes, a partir de cuando empezaría a llamarse a sí misma "Binario" y se uniría a los Starjammers, un grupo de liberadores intergalácticos.
Con el tiempo, Carol volvería a la Tierra, perdiendo muchos de sus poderes como Binario al usarlos para salvar el Sol, tras lo cual se haría llamar "Pájaro de Guerra" y retomara su alianza con los Vengadores, entre ellos Iron Man, al tiempo que empezaba a darle a la bebida (ante lo cual Iron Man, quien había pasado por el mismo problema antes, decidió ayudarla).
Con el tiempo, Danvers ha vuelto a tomar el alias de Ms. Marvel.

domingo, julio 08, 2012

The CubesPaper, Número XXXV (08/07/2012)

Bueno, no hay mucho que ver esta semana, se nota que las editoriales se están reservando para la San Diego Comic-Con International de la semana que viene, pero alguna que otra cosa se ha dejado caer.

Nueva miniserie centrada en Matanza
El simbionte alienígena se enfrentará a la Araña Escarlata y Veneno este octubre.
Más información: ZonaNegativa

Reinicio de las numeraciones de Marvel
Bajo el nombre de "Marvel NOW!", Marvel reiniciará todas las numeraciones de sus series sin reiniciar el universo.
Más información: ComicVine ZonaNegativa

Nuevo evento DC sobre los Linternas Verde
Las colecciones centradas en Linterna Verde se unirán a partir de agosto en el evento Rise of the Third Army.
Más información: ZonaNegativa

sábado, julio 07, 2012

San Diego Comic-Con International

Para quien no lo sepa, el fin de semana que viene, o sea, desde el jueves 12 hasta el domingo 15, se celebrará en San Diego la popular San Diego Comic-Con International, un evento que reune desde 1970 a todo tipo de elementos relacionados con el cómic, cine, videojuegos y muchos otros elementos de la cultura geek, siendo sin duda el mayor evento a nivel mundial sobre ésto. Por supuesto, todos los años las editoriales se encargan de tener una buena cantidad de sorpresas preparadas para deleitarnos con ellas durante dicho evento, así que el The CubesPaper de la semana que viene estará, probablemente, muy interesante, así que no recomendaría perdérselo, ya que yo al menos estaré muy atento de lo que ocurra en esta convención.

viernes, julio 06, 2012

Trailer de... ¿Final Fantasy VII?

No, no os habéis montado en un DeLorean y estais de vuelta en 1997, seguimos en 2012 y, recientemente, Square-Enix, la famosa empresa que ha lanzado, entre otros juegos famosos, la saga Final Fantasy, se ha decidido por fin a relanzar para PC el juego estrella de dicha saga, la séptima entrega, con nuevos contenidos y opciones adicionales. Y aquí el trailer que nos han dejado.


Nada nuevo, ni siquiera hay mejores gráficos. No es el esperado remake que todos los fans llevamos esperando hace años, pero ya que hace unos años se lanzó en la PlayStation Network, ya era hora de que los usuarios de PC tuviéramos la opción de poder acceder a este relanzamiento.
Ahora en serio, ¿para cuándo el remake?

jueves, julio 05, 2012

(Reseña de película) Men in Black

Con el motiov del estreno de Men in Black III y al igual que he hecho con las películas de Batman, he decidido antes de reseñar dicha película (que, por cierto, aún no he visto), reseñar sus dos primeras partes. Así que hoy empiezo con Men in Black, la primera película de una saga basada en la novela gráfica del mismo nombre de Lowel Cunningham, aunque con un tono mucho más desenfadado y humorístico, dirigida por Barry Sonnenfeld y protagonizada por Tommy Lee Jones y Will Smith.
Una organización no gubernamental se encarga de lidiar con las invasiones alienígenas a nuestro planeta con la mayor discreción posible. Cuando James Darrel Edward III, un policía de Nueva York, se topa con un alienígena y es capaz de atraparlo, atrae la atención del agente K, quien decide proponerlo como nuevo miembro de la agencia, mientras intentan descifrar el mensaje que el alienígena les dejó antes de suicidarse.
Simplemente, una película fenomenal. Divertida casi desde el primer momento y con un humor tan inteligente y sarcástico, lleno de referencias a la cultura pop, que es imposible no soltar más de una sonrisa a lo largo de la película. Además, la trama está muy bien cuidada, los personajes están tratados fenomenalmente y el ritmo es perfecto. A esto se le suman unos actores fenomenales, tanto los protagonistas como los secundarios, siendo tal vez la que menos se luce Linda Florentino, cuyo papel no es nada del más allá.
Los efectos especiales, bueno, hay que entender que es una película del 97, aunque aún así por esa época había tecnología bastante más profesional. Aunque el hecho de que los efectos no sean tan buenos tal vez sea, en parte, intencional, ya que unos alienígenas más "realistas" (por decirlo de alguna manera) tal vez hubieran provocado una reacción menos simpática por parte del expectador.
Una joya de película, aunque no he leído el cómic (y por lo que sé, tienen poco que ver), pero sin duda la película por sí misma es una de las mejores comedias de la década de los 90's.

miércoles, julio 04, 2012

(Reseña de cómic) DC Universe Online: Legends

Con el lanzamiento del DC Universe Online, el MMO de DC Comics, en enero de 2011, una serie de cómic expandiendo la historia del juego se empezó a publicar un mes después de dicho lanzamiento, con Marv Wolfman como principal guionista (sustituido sólo en dos números) y con varios artistas a lo largo de la colección.
Al igual que el juego, el cómic nos muestra cómo, en un futuro no muy lejano, la batalla final entre héroes y villanos ha comenzado, siendo ganada por estos últimos cuando Luthor consigue acabar con Superman. Sin embargo, pronto se da cuenta del terrible error que ha cometido cuando Brainiac lo traiciona al comenzar con la aniquilación de la vida del planeta, por lo que Luthor debe cambiarse de bando y encontrar la forma de volver al pasado para prevenirse a sí mismo de cometer el error de aliarse con la entidad extraterrestre.
El concepto del cómic, siendo el mismo del juego, está bastante bien. El problema es el desarrollo, el cual voy a destripar no tan levemente así que si tenéis intención de leer el cómic recomiendo saltar por completo este párrafo. En primer lugar, el cómic sólo guarda ciertos puntos en común con el juego, pero enseguida se distancia mucho al contradecir ya desde por sí la escena introductoria del juego en la que el Luthor del futuro contacta con la JLA para advertirles de la futura invasión, ya que en esta versión Luthor sólo contacta consigo mismo y ni siquiera estamos muy seguros de en qué momento ocurre, ya que en los primeros números la historia va saltando del futuro al presente y, al no mostrarnos el momento en que ambos Luthor contactan por primera vez, nos quedamos un poco confusos cuando el Luthor del presente empieza a hacer referencia a los eventos del futuro sin explicación aparente. Pero, aparte de este caso, existen otros momentos en el que los personajes hacen algo "fuera de escena" y luego no se nos explica claramente, lo cual lo vuelve aún más incomprensible. Y, por si fuera poco, la historia se convierte en una sucesión de desastres y muertes todas con una evidente intención de conseguir la sorpresa fácil del lector, todas cosas que, como se va haciendo más que evidente, no se podía mantener, por lo que la serie acaba con un absurdo reinicio de universo que elimina todo lo ocurrido a lo largo de los 26 números que dura la serie. Y a eso hay que añadirle el problema de ignorar completamente el juego, convirtiendo la historia en una odisea personal de Luthor y dándole algo de protagonismo a Batman sobre todo, Superman y un poco a la Mujer Maravilla, mientras Circe y el Joker ven sus papeles mermados hasta el punto de que este último sólo tiene un par de cameos en uno de los cuales encima decide desentenderse de todo el asunto (aunque hay que reconocer que pega con su carácter). Lo único que es ligeramente de agradecer es que se creen algunos nuevos héroes y villanos como parte de la trama que, de hecho, se supone que da poderes al jugador, aunque aún así no tienen gran peso en la trama.
Bueno, dejando los spoilers tras haberme explayado quejándome de la historia, hablemos del dibujo, el cual es por lo general bastante bueno, aunque al pasar varios dibujantes a lo largo de la colección, hay momentos mejores y peores, pero de forma general el trabajo es bastante bueno.
La verdad, una lástima de cómic ya que la historia tenía mucho potencial, pero ha sido llevado de una manera bastante mala. Tal vez haya sido el hecho de que se haya recortado a la mitad la colección, pero aún así no creo que hubiera mejorado mucho con los 52 números que se suponía iban a ser originalmente.

martes, julio 03, 2012

Curso de desarrollo web, Parte XXXIX: Eventos (I): eventos de ratón

Otra semana más en que no he arreglado los anteriores posts... Acabaréis por matarme, lo sé. Bueno, al menos no os dejo colgados y todas las semanas tengo cosas nuevas, ¿no? De todos modos, estad atentos porque la semana que viene el post de desarrollo web se posteará el miércoles en lugar del martes. Y, sin más dilación, aquí va la explicación de esta semana.
La semana pasada aprendimos el segundo de los tres métodos para introducir JavaScript en nuestra página web. Ahora podemos escribir nuestro código directamente en la página, como llevamos haciendo desde el comienzo, o escribirlo aparte en un archivo externo y linkarlo, lo cual, entre otras cosas, puede servir para tener todo más ordenado. Pero existe un tercer método, pero para entender este tercer método primero tenemos que entender un nuevo e interesante concepto: los eventos.
En varias ocasiones desde que comenzamos este tutorial he hablado de cómo JavaScript sirve para hacer páginas más dinámicas de las que podíamos hacer con HTML y CSS. Sin embargo, hasta el momento, el dinamismo de la página sólo ocurría en el momento de cargarse: a través de "prompt" pedíamos algún dato al usuario y, una vez lo teníamos, mostrábamos la página con aquellos datos que hubieramos recolectado, convirtiéndose en una página web sosa y con poca interactividad (sólo aquella que los enlaces nos permitieran). Sin embargo, los eventos nos permitirán evitar eso. Vamos a ver cómo.
Los eventos, en programación, son aquellos momentos en que algún elemento de nuestra aplicación sufre un cambio de estado por algún motivo, lo cual puede llevar a ejecutar una instrucción. Para entenderlo facilmente, un evento inherente al HTML es que, cuando se pulse sobre un enlace, desaparezca la página en que estamos (o no) y se cargue una nueva. El evento en este ejemplo es el pulsar sobre el enlace, y el abrir la nueva página son las instrucciones lanzadas por dicho evento.
La mayoría (si no todas) las etiquetas HTML pueden contener eventos. Hay eventos para cuando el usuario pulse en un lugar determinado de la página, también hay eventos para cuando pulse alguna tecla, eventos que se disparan cuando se carga la página o cuando se intenta salir de ella... La mayoría de las posibles situaciones que se pueden presentar mientras un usuario interactúa con una página pueden disparar eventos, y dentro de estos eventos podremos escribir instrucciones JavaScript. Vamos a ver cómo.
Imaginemos que tenemos una imagen, la cual queremos que, cuando un usuario pulse sobre ella, se muestre un "alert" con una descripción de la imagen. Eso sí, no queremos que el usuario abandone la página y tenga que volver a cargarla para ello, así que no vamos a incluir la imagen dentro de un hipervínculo. Entonces, ¿qué podemos hacer?

<img src="http://lh4.googleusercontent.com/-sptvhGXA_pM/AAAAAAAAAAI/AAAAAAAAHKo/5XbR0Te29L0/s512-c/photo.jpg" onclick="javascript: alert('Mi avatar');" />

Si ponemos ese código veremos la imagen en nuestra página pero no veremos ninguna indicación de que vaya a ocurrir nada al pulsar sobre él. Sin embargo, si lo hacemos, podremos ver que un "alert" se dispara mostrándonos el texto "Mi avatar". Eso, señores, es un evento.

Como véis, esta tercera manera de incluir código JavaScript en nuestra página es a través de unos atributos llamados "atributos de evento", que suelen ser todos muy descriptivos: Este que hemos usado es el "onclick", aunque existen "onkeydown" (al pulsar una tecla), "onmouseover" (al pasar el cursor por encima), "onblur" (cuando un elemento de un formulario deja de estar seleccionado), etcétera.
También podemos advertir que dentro del atributo hemos incluído algo de código que no conocemos, aunque no es difícil adivinar para qué es. Ese "javascript: " que hemos incluído antes de comenzar el código, como podéis imaginar, sirve para lo mismo que el atributo "type" que usábamos en la etiqueta "script". Aunque en este caso no es obligatorio, ya que la mayoría de los navegadores lo interpretan como JavaScript si no tienen otra indicación, siempre es recomendable incluirlo, ya que puede que algún día nos topemos con un navegador que no lo interprete así, y nuestra aplicación no funcione.
Esto parece sencillo, ¿no? Pues bien, vamos a ver algunos de los distintos eventos que podemos encontrarnos. Estos eventos son los eventos relacionados con el ratón:

  • onclick: El que hemos visto justo ahora, se ejecuta en el momento en el que alguien pulsa sobre el elemento que tengamos.
  • ondblclick: Parecido al anterior, pero esta vez necesitamos que el usuario haga "doble click" en vez de un click simple, como ocurría con el "onclick".
  • onmousedown: Este evento puede parecer muy parecido al "onclick", pero hay una pequeña diferencia. El "onclick" funciona cuando se hace el proceso completo de pulsar sobre un elemento, pero si intentamos "arrastrar" el elemento con el ratón pulsado, ya no funciona el "onclick". El "onmousedown", por contra, ocurre desde el momento en el que el usuario pulsa el botón del ratón, sin esperar a que lo suelte, de modo que ni siquiera da tiempo al usuario a arrastrar, ya que antes de poder intentarlo ya se ha ejecutado. Bastante más útil que el "onclick" si queréis que funcione siempre que se pulse sobre un determinado elemento.
  • onmouseup: Éste es el contrario del "onmousedown", en este caso el evento se aplica cuando el usuario libera el botón del ratón sobre el elemento en cuestión. Esto significa que el usuario puede hacer click fuera y luego arrastrar el ratón con el botón pulsado hasta el elemento, y una vez ahí liberarlo, activando el evento. Claro que este evento no se activará en caso de que el usuario pulse sobre el elemento y salga del elemento antes de liberar el botón.
  • onmousemove: Este evento se activará siempre que el usuario tenga el ratón encima del elemento. O sea, que la única manera de que deje de ejecutarse las instrucciones del "onmousemove" es que saque el ratón del elemento.
  • onmouseover: A diferencia del "onmousemove", el "onmouseover" sólo se activa una vez, en el momento en el que el ratón entra en el área del elemento, y no se volverá a activar hasta que el ratón no salga y vuelva a entrar.
  • onmouseout: El contrario del "onmouseover", este se activará en el momento en el que el ratón abandone el área del elemento, y no volverá a activarse hasta que el ratón no vuelva a entrar en el elemento y vuelva a salir.
Nunca se os había ocurrido que podíais  hacer tantas cosas sólo con el ratón, ¿eh? La verdad, son unos eventos un tanto extraños, y sobre todo algunos como el "onmousedown" y "onmouseup" parecen un poco abstractos (sobre todo si hacéis caso de la mayoría de las descripciones que hay en la mayoría los manuales y tutoriales... yo he aprendido a usarlos por experiencia, porque si es por cómo me lo explican... espero que de esta manera lo hayáis entendido bien), así que lo mejor que podéis hacer es coger el código que hemos visto más arriba e ir cambiando el evento por cada uno de estos para poder entender correctamente cómo funciona cada uno.
Y, por esta semana, aquí lo dejo. La semana que viene seguiremos viendo más tipos de eventos, ahora que se supone que más o menos empezáis a entender lo que es un evento.

EJERCICIO

Bueno, la idea esta semana será probar todos esos eventos mediante una pequeña aplicación con una imagen que vaya soltando "alerts" según lo que el usuario esté haciendo sobre la imagen (arrastrar algo hasta ella, abandonarla, entrar, hacer click...). Realmente no hay mucho más que podamos hacer con el contenido de esta semana. Ya la semana que viene habrá algo más interesante.

Antes de despedirme, vuelvo a recordar que el post de desarrollo web de la semana que viene se escribirá el miércoles. También, para aquellos que no sigan el blog con regularidad, les recomiendo mirar el post del sábado pasado si les interesa ver una explicación del trabajo que realicé en Berlín, que fue con interfaz web, así que puede parecerles curioso ver cosas de nivel avanzado para que sepáis lo que vamos a ir logrando poco a poco.