Función para distribuir clips en ancho por programación

7 de Septiembre de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Funcion para Flash MX que nos permite distribuir en ancho una serie de clips, simulando la herramienta que existe a tal efecto en tiempo de dise?!–more–>

Este es el c?o comentado de la funci?istribuyeAnchos:

/*
Funcion que ademas de distribuir una serie de elementos del mismo ancho,
permite distribuir elementos de anchos diferentes, segun se le pase por un
par?tro (“iguales”).
Permite dejar un margen en los laterales en la distribuci?i se desea.

Los par?tros de la funci?ienen el siguiente significado:

referencia: Es el clip al que pertenecen (o el clip que hace de contenedor) los
elementos que se van a distribuir. Si estuvieran en la escena principal
se pasaria _root a la funci?/em>

nombre: es el nombre que tienen todos los elementos en com?
Es decir, si las instancias de los elementos a distribuir se llamaran
por ejemplo boton_1, boton_2…. etc el valor a pasar aqui seria:
“boton” ya que el “_” se le a? en la propia funcion.

primero: es el n?o del nombre de instancia del primer elemento a distribuir, en
el ejemplo anterior, seria el 1.

nElementos: Es el numero de elementos que van a distribuirse, con este valor se
calculan los topes superiores de los bucles que har?la distribuci?usando
tambien el valor pasado en el par?tro primero.

margenLateral: Es el margen lateral que se quiere dejar en la distribuci?/em>

anchoZona: Es el ancho de la zona donde se va a distribuir, si fuera toda la
escena podria pasarsele: Stage.width

iguales: variable booleana que indica si todos los anchos de los elementos
son iguales, o cada uno tiene su propio ancho. Si se le pasa true, son
iguales y si se le pasa false quiere decir que son diferentes.
*/

distribuyeAnchos = function(referencia, nombre, primero, nElementos, margenLateral, anchoZona, iguales)
{
   var ultimo = primero+nElementos-1;
   var i=0;
   var k=0;
  var anchoElementos = 0;
 
   if (iguales)
   {  
    // En caso de que todos sean iguales, calculamos el espacio ocupado
   // por los elementos multiplicando el numero de elementos por el ancho
   // de un elemento cualquiera, en este caso el primero.
      anchoElementos = nElementos * referencia[nombre+"_"+primero]._width;
   }
   else
   {
   // En caso de que no sean todos iguales, hemos de ir sumando el ancho
   // de todos los elementos para calcular el espacio ocupado por todos
      for (i=primero; i      {
         anchoElementos += referencia[nombre+"_"+i]._width;
      }
   }
 
  // Una vez tenemos el espacio ocupado por todos los elementos calculamos
  // el espacio que nos queda libre para distribuir dichos elementos. El espacio
  // libre es logicamente el ancho de la zona menos el espacio ocupado por los
  // elementos y menos los dos m?enes laterales que le pasamos a la funci?em>
   libre = anchoZona – (anchoElementos + 2*margenLateral);
 
  // La separaci?ue hemos de dejar entre elementos es el espacio libre que existe
  // dividido entre el numero de elementos menos una unidad, es decir, dividido entre
  // el n?o de zonas “entre elementos” existentes.
   separacion = libre/(nElementos-1);
 
  // Una vez sabemos la separaci? dejar entre elementos, pasamos a recolocar en pantalla
  // los mismos, empezando con el primero en la posici?argen lateral, y con los sucesivos
  // a una distancia igual a separacion con respecto al anterior.
   referencia[nombre+"_"+primero]._x = margenLateral;
   for (k=(primero+1); k   {
      referencia[nombre+"_"+k]._x = Math.round(referencia[nombre+"_"+(k-1)]._x + referencia[nombre+"_"+(k-1)]._width + separacion);
   }
}

Ejemplo de uso:

Se han de colocar en el escenario (_root) una serie de instancias con una nomenclatura similar a esta: miclip_1, miclip_2, miclip_3 (nomenclatura que vincula las instancias mediante una parte com? otra numerada que es distinta para cada clip). Las instancias pueden ser de clips diferentes, solamente importa la nomenclatura elegida. Una vez colocadas en cualquier lugar (para ver el efecto es preferible colocarlos de manera que esten muy mal distribuidos en su ancho) se llama a la funci?e ?a manera desde la linea de tiempo principal:

distribuyeAnchos(_root, “miclip”, 1, 3, 10, Stage.width, false);

Pod? comprobar el resultado.

Mejora: Un buen ejercicio puede ser adaptar esta funci?ara que en vez de necesitar clips con una nomenclatura “relacionada”, admita clips con cualquier nombre. La idea es almacenar los nombres de los clips en un array y pas?elo a la funci?ara trabajar sobre ellos. En ese caso los par?tros: nombre, primero y nElementos no son necesarios, ya que se pueden obtener del array mencionado.

Utilidad en la pr?ica: Una de las utilidades que se le puede dar a esta funci?s la de distribuir uniformemente las opciones de un menu que se genera por programacion mediante la repetici?e clips. Con ella nos ahorramos preocuparnos de las posiciones de los clips, ya que si aumentamos las opciones, simplemente habria que cambiarle los par?tros y adaptaria el menu al nuevo n?o de opciones.

Nota: La funci?st?ensada para distribuir clips cuyo centro esta situado en su esquina izquierda (en este caso la posici?ertical no afecta). Si el centro est?n otro lugar, no afecta a la distribuci?pero s? los m?enes dejados.

Prototipo getHora()

28 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Muestra la hora del sistema. Muy ?. Utiliza la funci?etInterval() para crear un bucle que refresca continuamente la salida. Seguir leyendo

Prototype getFecha()

26 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Inserta la fecha en tus paginas flash de forma sencilla. Los prototypes, ofrecen varias ventajas: entre ellas la de no sufrir restricciones de niveles. Seguir leyendo

Cambio Online de Estilos

23 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Este tutorial est?asado en un c?o recogido en las news de Macromedia en Castellano. Su objetivo no es m?que dar al usuario la posibilidad de elegir al usuario el aspecto que m?le agrade de nuestra web Seguir leyendo

Web Publishing System para colaboradores de contenido

23 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

El Macromedia Web Publishing System les permite a los profesionales de negocios y a los colaboradores de contenido participar directamente en la publicaci?eb y darle vida a los sitios web con contenido y comunicaciones al d? Al desaparecer los embotellamientos, los procesos comerciales avanzan con rapidez. Seguir leyendo

Flash MX 2004– EmbedFonts con texto dinámico

11 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Dotar a nuestros sitios de personalidad, infundirles un estilo propio. La tipograf?juega un papel importante en este aspecto del dise?pero podemos encontrarnos con barreras: el uso de fuentes que no son de sistema puede provocar que nuestro trabajo se vea afectado negativamente por el mero de hecho de que esa tipograf?que tanto nos gusta no est?nstalada en el sistema de nuestro visitante, ahora con flash MX 2004, solucionar este problema es mas sencillo que nunca. Seguir leyendo

Flash MX 2004 – Componente ScrollPane I

8 de Agosto de 2004 por Andres Cayon 0 Comentarios Archivado en Articulos

Puedes utilizar un panel de desplazamiento (ScrollPane) para mostrar cualquier contenido que sea m?grande que el ?a en la que se ha cargado. Por ejemplo, una imagen grande que debe mostrarse en un espacio reducido de una aplicaci?

Seguir leyendo