Comentarios extraños en los codigos fuentes

20 de Abril de 2009

// sometimes I believe compiler ignores all my comments

———————————————————————————-

// I dedicate all this code, all my work, to my wife, Darlene, who will

// have to support me and our three children and the dog once it gets

// released into the public.

———————————————————————————-

return 1; # returns 1

———————————————————————————-

//When I wrote this, only God and I understood what I was doing

//Now, God only knows

———————————————————————————-

/*

* You may think you know what the following code does.

* But you dont. Trust me.

* Fiddle with it, and youll spend many a sleepless

* night cursing the moment you thought youd be clever

* enough to “optimize” the code below.
* Now close this file and go play with something else.

*/

———————————————————————————-

/**
* For the brave souls who get this far: You are the chosen ones,

* the valiant knights of programming who toil away, without rest,

* fixing our most awful code. To you, true saviors, kings of men,

* I say this: never gonna give you up, never gonna let you down,

* never gonna run around and desert you. Never gonna make you cry,

* never gonna say goodbye. Never gonna tell a lie and hurt you.

*/

———————————————————————————-

//

// Dear maintainer:

//

// Once you are done trying to ‘optimize’ this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:

//

// total_hours_wasted_here = 16

//

———————————————————————————-

//This code sucks, you know it and I know it.

//Move on and call me an idiot later.

———————————————————————————-

//I am not sure why this works but it fixes the problem.

———————————————————————————-

# However, this only works if there are MULTIPLE checkboxes!

# The f*cking JS DOM *changes* based on one or multiple boxes!?!?!

# Damn damn damn I hate the JavaScript DOM so damn much!!!!!!

———————————————————————————-

# code below replaces code above - any problems?

# yeah, it doesn’t f*cking work.

Actionscript 2: Carousel 3D Basico

4 de Abril de 2009

Ejemplo sencillo de un carousel 3D , q se puede utlizar como menu, galeria de productos….

En este caso lo utilizaremos como una galeria de peliculas.

  1. Creamos un archivo nuevo de AS2 de 400 x 300.
  2. Agregamos 6 thumbnails de portadas de peliculas a la biblioteca.
  3. Creamos un movie clip de cada portada, con el nombre “pelicula1″, “pelicula2″, “pelicula3″…
  4. En las propiedades de cada MVC en el modo avanzado, habilitamos la opcion Exportar para Actionscript.
  5. En el primer fotograma agregamos el codigo:
//Parametros iniciales
var numPeliculas:Number = 6;
var radioX:Number = 150;
var radioY:Number = 70;
var centrarX:Number = Stage.width / 2 + 30;
var centrarY:Number = Stage.height / 2;
var velocidad:Number = 0.02;

for(var i=0;i<numPeliculas;i++){
   var t = this.attachMovie("pelicula"+(i+1), "p"+i, i+1);
   t.angle = i * ((Math.PI * 2) / numPeliculas);
   t.onEnterFrame = mover;
}

function mover(){
   this._x = Math.cos(this.angle) * radioX + centrarX;
   this._y = Math.sin(this.angle) * radioY + centrarY;
   var s = this._y /(centrarY+radioY);
   this._xscale = this._yscale = s * 100;
   this.angle += this._parent.velocidad;
   this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function(){
   velocidad = (this._xmouse-centrarX) / 1500;

}


Descargar codigo

Para hacer una version mas avanzada del carousel, se puede combinar leyeno un listado de productos en un XML.

Pronto publicare la version en AS3

Actionscript 3: Crear una clase sencilla

1 de Abril de 2009

Este es un ejemplo sencillo para entender como funcionan las clases en Actionscript 3.

Es muy parecido a lenguaje C, y como sabemos AS3 es un lenguaje que viene principalmente para trabajar con OOP, asi que es mejor aconstumbrase a utlizar clases, para aquellos que aun no les gusta … xD

  • Package:  /root del documeto
  • Clase: Saludo
  • Propiedades:
    • nombre - Declaro la variable nombre que va a ser utilizada en el saludo
  • Metodos:
    • Saludo() constructor de la clase - crea una nueva instancia de la clase; un parametro opcional va a ser pasado a la funcion para inicializar el nombre que va en el saludo.
    • darSaludo() - recibe el parametro apellido, y retorna un String que contiene el texto del saludo.

En codigo se veria asi:

package{
   public class Saludo{

      //propiedades
      public var nombre:String;

      //Constructor
      public function Saludo(nombreActual:String = ""){
         //setear el valor si lo pasan de parametro
      }

      //metodos
      public function darSaludo(apellido:String):String{
         //crear el texto del saludo y retornalo
      }
   }
}

Ahora vamos a armar los 2 archivos necesarios para correr el codigo

Creamos Saludos.as

package{
   public class Saludo{

      public var nombre:String;

      public function Saludo(nombreActual:String = ""){
         this.nombre = nombreActual;
      }

      public function darSaludo(apellido:String):String{
         var respuesta:String;
         respuesta = "Hola " + this.nombre + " " + apellido + "!!!";
         return respuesta;
      }
   }
}

Ahora creamos el archivo simpleSaludo.fla

Creamos un archivo nuevo de flash con actionscript 3

Seleccionamos la herramienta texto y agregamos un campo de texto en el area de trabajo.

Luego a ese campo de texto le colocamos en las propiedades, el nombre de instancia texto.

Creamos una nueva capa en el documento, que va a contener el siguiente codigo actionscript:

import Saludo;

var miSaludo:Saludo = new Saludo("alex");

texto.text = miSaludo.darSaludo("Valera");

Tips a la hora de crear una clase:

  • El nombre de la clase es el mismo nombre del archivo .as. En el ejemplo la clase se llama Saludo y el archivo Saludo.as
  • La linea import Saludo; no es necesaria si los 2 archivos estan sueltos en el root.
  • Si  el archivo .as  se encuentra dentro de un directorio ejemplo /carpeta1/carpeta2/archivo.as
    se debe hacer lo siguiente:

    en el .as la linea package seria asi “package carpeta1.carpeta2″
    y en el .fla seria “import carpeta1.carpeta2.Saludo

Descargar codigo

Actionscript 3: Cargar XML

31 de Marzo de 2009

Las librerías XML han sido completamente optimizadas en actionscript 3. Estas utilizan un sistema llamado ECMAScript para XML (E4X), que hace que sea mucho mas fácil, el trabajo que con las herramientas que brinda actionscript 2.

La manera en la que cargamos archivos XML externos, o cualquier cosa que tenga que ver con cargar archivos en las películas de flash, han cambiado dramáticamente.

En AS2 creamos un objeto XML y luego llamamos el método XML.load() para cargar un archivo externo. En AS3 se utiliza la nueva clase URLLoader para cargar archivos XML externos.

//Inicializamos el objeto XML
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlData.ignoreWhite = true;

//Cargamos el archivo XML
xmlLoader.load(new URLRequest("libros.xml"));

//En el evento COMPLETE llamamos a la funcion LoadXML
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);

function LoadXML(e:Event):void {
   var titu:String;
   xmlData = new XML(e.target.data);
   for(var i:int=0; i<xmlData.libro.length(); i++){
      resultados_mc.appendText(xmlData.libro[i].titulo.toString()
       + "\n" + xmlData.libro[i].autor.toString() + "\n\n" );
   }
}

Descargar codigo

Capturar o aplicar atributos a etiquetas con Prototype

26 de Marzo de 2009

(Utilizando el framework Prototype)

Este código es muy útil, cuando se necesita obtener todos los elementos de un tipo, ya sea dentro de toda la pagina o dentro de un área especifica.

Por ejemplo, podríamos capturar como abjetos, todos los enlaces que se encuentren en un div y cambiar o utilizar sus atributos (href, class, id, name…).

Supongamos que tenemos…

<div id="container">
   <a href="#pagina1" class="enlace1" id="link">pagina1</a>
   <a href="#pagina2" class="enlace1" id="link">pagina2</a>
   <a href="#pagina3" class="enlace2" id="link">pagina3</a>
   <a href="#pagina4" class="enlace2" id="link">pagina4</a>
   <a href="#pagina5" class="enlace2" id="link">pagina5</a>
</div>

Ejemplo 1: Capturar todos los enlaces que se encuentran en el div #container

<script type="text/javascript">
   function capturar(){
      $$('#container a').each(function(objeto) {
          alert('href: ' + objeto.href);
      });
   }
</script>

<button onclick="capturar1();">Test</button>

Ejemplo 2: Capturar todos los enlaces en la pagina

<script type="text/javascript">
   function capturar2(){
      $$('#link').each(function(objeto) {
         alert('href: ' + objeto.href);
      });
   }
</script>

<button onclick="capturar2();">Test</button>

Ejemplo 3: Capturar todos los enlaces que se encuentran en el div #container que tienen una clase en especifico

<script type="text/javascript">
   function capturar3(){
      $$('#container a.enlace1').each(function(objeto) {
         alert('href: ' + objeto.href);
      });
   }
</script>

<button onclick="capturar3();">Test</button>

Ver Demo

Aqui pueden ver mas utilidadesde la funcion $$

http://www.prototypejs.org/api/utility/dollar-dollar

Galerias que recomiendo

25 de Marzo de 2009

Lightbox

Es una de las galerias mas utilizadas para el despliege que imagenes.

Soporta: imagenes solamente.

Url: http://www.huddletogether.com/projects/lightbox2/

Modalbox

Excelente  galeria para navegar entre paginas sin necesidad de cerrar el modalbox, sin usar iframes.

Soporta: HTML, envios de forms, parametros por query string…

Url: http://www.wildbit.com/labs/modalbox/

Highslide

Una de las mejores galerias que e usado, te permite mostrar las imagenes o contenido de diferentes maneras.
Soporta lightbox o en una ventana con drag y controles para las imagenes.

Soporta: HTML, AJAX, swf, imagenes, iframes.

Url: http://highslide.com/