Ésta es una clase muy simple que dispone elementos traídos desde la biblioteca, y antes de haberlos duplicado, los ubica en filas y columnas. Esta clase puede ser el principio para armar galerías de fotos, botoneras, etc., ya que puede recibir tanto MovieClips como Sprites. Conseguí acabarla después de unos pequeños tropiezos, que el Gran Maestro Z supo solucionar
Veamos, lo primero que necesitamos es un clip en la biblioteca instanciado y exportado para ActionScript.
Una vez echo esto vamos con la clase:
Nota: prestar atención a los comentarios donde se explica el código
Código :
package com.penholder.display.mc{ // import flash.display.DisplayObject; import flash.display.MovieClip; // public class DisplayMovieClipAsGrid extends MovieClip { // private var _clip:DisplayObject; // este sera el clip que le pasaremos desde la biblioteca private var _n:Number; // la cantidad de clips a duplicar private var _column:Number; // cantidad de columnas private var _space:uint; // la separación entre los elemntos private var _posX:uint; // las posiciones tanto en x private var _posY:uint; // como en y // public function DisplayMovieClipAsGrid(clip:DisplayObject, n:Number, column:Number, space:uint):void { // pasamos las propiedades del constructor _clip = clip; _n = n; _posX = 0; _posY = 0; _column = column; _space = space; // buildGrid(); } // private function buildGrid():void { // for (var i:uint = 0; i < _n; i++) { /* le pasamos a un nuevo objeto del tipo DisplayObject una nueva instancia del clip original en cada vuelta del for, el uso del displayObecto es lo q nos permite utilizar cualquier tipo de contenedor */ var mc:DisplayObject = new (Object(_clip).constructor); // ahora los vamos ubicando separados por el parametro "space" mc.x = (mc.width + _space) * _posX; mc.y = (mc.height + _space) * _posY; _posX++; // entonces una vez que se alcanzo el numero de columnas bajamos de fila if (_posX == _column) { _posX = 0; _posY++; } // final mente añadimos todos los clips al contenedor addChild(mc); } } } }
Y en el fla tendríamos:
Código :
import com.penholder.display.mc.DisplayMovieClipAsGrid; // var Grid:DisplayMovieClipAsGrid = new DisplayMovieClipAsGrid(new Clip(), 12, 3, 5); addChild(Grid);
De esta forma new Clip() es el objeto instanciado con esa clase en la biblioteca.
Como se puede ver la clase permite ordenar en una cuadrícula, así como también en una sola filo o columna, bastaría con asignar la misma cantidad de objetos a duplicar como de columnas, para un alineación solo horizontal; o bien una sola columna para que se dispongan en forma vertical.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zah el 12 de Septiembre de 2008
Molaría que tuviera algunas opciones más, como que permitiera elegir el número de filas, en vez de el de columnas, o incluso pasarle un objeto del tipo Rectangle, y que los elementos se ajustaran de la mejor manera a él.
pd: la grilla es la esposa del grillo
Por nazcaline el 13 de Septiembre de 2008
Por Zguillez el 13 de Septiembre de 2008
nazcaline :
http://www.cristalab.com/foros/t42236_arrays-multidimensionales-en-actionscript.html
http://www.cristalab.com/tips/42262/clase-de-actionscript-3-para-arrays-multidimensionales.html
Por eldervaz el 14 de Septiembre de 2008
Por penHolder el 17 de Septiembre de 2008
eldervaz-blog :
el codigo anterior da:
Por Eliseo el 25 de Septiembre de 2008
Además, sería conveniente que devolviera en un array los elementos creados, por si se quiere hacer algo con ellos
Por malpher el 01 de Octubre de 2008
Por harlem el 07 de Septiembre de 2010
Por ange cortz el 16 de Abril de 2013