-----Mensaje original-----
De: Rafael Martinez [mailto:[EMAIL PROTECTED] 
Enviado el: jueves, 25 de enero de 2007 9:06
Para: Joseba Alonso
Asunto: RV: [ASNativos] Clase AlignManager

OK Ahí va..
------------------------------

Hola Sergio,
Seguro que no es al único que le ha resultado interesante la clase.

Yo la he puesto a prueba y me ha gustado.

Solo tengo una observación que quizás si tienes algo de tiempo la podrías
implementar.
EL OBJETIVO:
Por costumbre suelo colocar en el centro del escenario un mc que suele
contener prácticamente todos los elementos de la película y si alguno de los
elementos de este mc lo necesito reposicionar en el stage, por ejemplo en el
lateral izquierdo de la pantalla hay que calcular el ancho del stage menos
la posición _x del mc contenedor y menos el ancho del propio objeto a mover.

LO QUE HACE TU CLASE AHORA
Considerando que B_mc está dentro de A_mc
Si posicionas primero   A_mc con respecto al _root y luego a B_mc también
con respecto al _root, entonces  A_mc pierde la posición aplicada por la
clase.

Si se pudiera implementar el método de tal manera que independiente a el
scope que se encuentre el target lo puedas alinear tanto con su propio scope
como con el _root, la clase tendría una utilidad mayor (al menos para mi).

Por último agradecerte la iniciativa que has tenido de compartir y exponer
tu trabajo con todos nosotros.

Un saludo


--------------------------------------
Rafael Martínez
[www.fabricanet.com]
--------------------------------------




-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre
de sergio.daroca Enviado el: lunes, 22 de enero de 2007 20:15
Para: asnativos
Asunto: Re: [ASNativos] Clase AlignManager

Hola Carlos,
0-Me alegra que a alguien le resulte interesante, y elegante no digamos...
gracias...
1-He actualizado la clase, porque repasando la implementación de Singleton
de Colin Moock, caigo en la cuenta, el constructor tiene que ser un método
privado...
2-Ahora tengo un problema para utilizarla en vez de mis antiguos
prototipos...
y es que antes cargaba mis protos en el primer swf y luego podía utilizarlos
sin recargarlos en cualquier swf que cargara, ahora sin embargo tengo que
importar la clase en cada swf en la que quiera utilizarlo, lo que aumenta
los Kbs, aunque no demasiado, porque solo utilizo esta clase...
3-No sé a qué te refieres con lo de la concordancia de tipos, -sé qué son
los tipos de variables y tal, pero aún no comprendo como el compilador me
dejó colar la clase...
(han sido tantos esfuerzos otras veces, con otras ideas, que   cuando hice
esto de un tirón casi me caigo de espaldas...) 4-Supongo que para mover y
alinear las cosas desde otra perspectiva que la que flash usa (TL),mejor
hacer otra clase, aunque tal vez pasándole los valores de alineación al
constructor de la clase, y así modificando la alineación del Stage..., en
fin que es un poco lioso tener en cuenta el punto de registro, y para casos
específicos puedes usar los valores de offset. Pero le echaré un vistazo.
5-Cierto, me olvidé de los TextFields y los Buttons... aunque la verdad me
lío con los instanceOf y TypeOf...
6-Más que ampliar la clase haría otra / otras que utilizaran esta. 

Por cierto, si alguien tiene por ahí un buen ejemplo de un 'distribuidor
espacial' o como lo querais llamar, sería un placer verlo.



PD: Si alguno necesita una textura 3D o un gráfico, o un modelo, mi amigo
manuel puso su web hace un par de meses con descargas gratis (25 diarias), y
muy, muy buenas: 
http://www.psicosonic.com
Son gratis, así que no me acuseis de hacer publicidad... además es un portal
con excelentes recursos.

Y anuncio, en una semana cuelgo una demo de mi gestor de contenidos en
flash...
(codigo abierto, descarga gratuita, versión MUY pre-alpha...)

Estaré sin internet unos días.
Pasadlo bien y no trabajeis mucho...

> Hola, Sergio:
> 
> Muy buena tu clase, y muy elegante. La idea de los márgenes en la 
> alineación me ha parecido excelente y muy original. Veo algún problema 
> de concordancia de tipos cuando quieres alinear un mc al Stage, ya que 
> este no es ni hereda de MovieClip, pero se puede arreglar fácil.
> 
> Veo mayor problema, sin embargo, cuando el clip que quieres alinear no 
> tiene su punto de registro en la esquina superior izquierda, sino, por 
> ejemplo, en el centro. Esto se podría solucionar recurriendo al método 
> GetBounds de la clase MovieClip, aunque complica un poco más los cálculos.
> 
> Otra posible ampliación que sugeriría es que se pudiesen alinear no 
> solamente mcs, sino también botones y campos de texto. Esto lo 
> solucionarías aceptando como primer parámetro un tipo Object, y luego 
> examinando si ese objeto es una instancia de MovieClip, Button o 
> TextField; si no es de ninguna de esas clases, sales de la función, y 
> si lo es, procedes como ahora. ¿Dificultades? Que si vas a tener en 
> cuenta que el punto de registro, este puede estar en cualquier sitio 
> del objeto a alinear si es un MovieClip, en la esquina superior 
> izquierda si es un TextField, y en el caso de un Button... pues no se 
> me ocurre ninguna manera de averiguarlo, oyes.
> 
> También podrías aceptar como primer parámetro un array de mc's (u 
> otros objetos), de modo que lo vayas recorriendo y apliques a cada uno 
> el código de alineación, para alinearlos todos de golpe. Esto sería 
> muy interesante de cara a ampliar la clase en un futuro para que no 
> sólo pueda alinear varios objetos, sino también distribuirlos, o 
> espaciarlos, al estilo del panel Alinear del Flash, aunque a lo mejor 
> nos estaríamos metiendo en palabras mayores...
> 
> Un saludo,
> Carlos
> 
> 
> 
> 
> > Mi primera clase en AS 2, -casi 3 años sin comprender a mi 
> > compilador...
> > Es una pequeña utilidad para alinear cosas... y registrar las 
> > alineaciones a Stage.onResize Seguro que hay cosas mejores por ahí, 
> > pero esta es sencilla...
> > Saludos!!!
> > http://usuarios.arsystel.com/sergiodf/as/sdf/AlignManager.as
> > /**
> > * The class gives an easy interface to align movieclips on Stage or 
> > to other movieclips,
> > * and register -or not- these alignments to the Stage.onResize 
> > event.
> > * @usage import sdf.AlignManager
> > * var aligner=AlignManager.getInstance();
> > * aligner._align(mc,Stage,'R',2,0,true);
> > * @author Sergio Daroca Fernández (funlab)
> > * @version 1.0
> > * @since 20-01-2007
> > */
> > class sdf.AlignManager
> > {
> > public var _alignments : Array = new Array (); private static var 
> > _instance : AlignManager = null; public function AlignManager () { 
> > Stage.scaleMode = "noscale"; Stage.align = "TL"; Stage.addListener 
> > (this); }
> > /**
> > * Used to instantiate the class, returns a 'singleton' class 
> > instance.
> > *
> > * @usage var aligner=sdf.AlignManager.getInstance();
> > * @return AlignManager instance
> > */
> > public static function getInstance () : AlignManager { if (_instance 
> > == null) { AlignManager._instance = new AlignManager (); } return 
> > AlignManager._instance; }
> > /**
> > * Aligns a movieclip to Stage or other scope (MovieClip), and 
> > registers (or not) the alignment to Stage onResize event.
> > * Uses 'T' 'M' 'B' and 'L' 'C' 'R' strings to set the alignment 
> > (case unsensitive).
> > * ('Top, Middle, Bottom' for vertical alignment)
> > * ('Left, Center, Right' for horizontal alignment)
> > * @usage
> > sdf.AlignManager.getInstance()._align(mc,Stage,'MR',6,0,true);
> > * This will instantiate the class, align mc to the Stage vertical 
> > center
> > * and to the right of the stage with a 6 pixels margin, and trigger 
> > the align action
> > * anytime the Stage is resized
> > * @param mc MovieClip to be aligned
> > * @param scope Alignment's scope (Stage or MovieClip)
> > * @param alignTo One of: 'T' 'M' 'B', and/or one of: 'L'
> > 'C' 'R'
> > * @param xmargin Horizontal offset/margin for alignment
> > * @param ymargin Vertical offset/margin for alignment
> > * @param register Wether to register the alignment for 
> > Stage.onResize method
> > * @return Void
> > */
> > public function _align (mc : MovieClip, scope : MovieClip, alignTo : 
> > String, xmargin : Number, ymargin : Number, register
> > : Boolean) : Void
> > {
> > var xmargin = isNaN (xmargin) ? 0 : xmargin; var ymargin = isNaN 
> > (ymargin) ? 0 : ymargin; switch (scope) { case Stage :
> > var _topHeight = Stage.height;
> > var _topWidth = Stage.width;
> > break;
> > default :
> > var _topHeight = scope._height;
> > var _topWidth = scope._width;
> > break;
> > }
> > var l = alignTo.length;
> > while ( -- l > - 1)
> > {
> > var _alignTo = alignTo.charAt (l);
> > switch (_alignTo)
> > {
> > case 'T' :
> > case 't' :
> > mc._y = Math.floor(0 + ymargin);
> > break;
> > case 'M' :
> > case 'm' :
> > mc._y = Math.floor(_topHeight / 2 - mc._height / 2 + ymargin); 
> > break; case 'B' :
> > case 'b' :
> > mc._y = Math.floor((_topHeight - mc._height) - ymargin); break; case 
> > 'L' :
> > case 'l' :
> > mc._x = Math.floor(0 + xmargin);
> > break;
> > case 'C' :
> > case 'c' :
> > mc._x = Math.floor(_topWidth / 2 - mc._width / 2 + xmargin); break; 
> > case 'R' :
> > case 'r' :
> > mc._x = Math.floor((_topWidth - mc._width) - xmargin); break; } } if 
> > (register) { var alignment : Object = {mc:mc, scope:scope, 
> > alignTo:alignTo, xmargin:xmargin, ymargin:ymargin}; 
> > _alignments.push(alignment); } }
> > /**
> > * Event Listener Method for Stage.onResize:
> > * Alingments that have been registered will trigger on 
> > Stage.onResize event through this function
> > *
> > */
> > private function onResize ()
> > {
> > var l = _alignments.length;
> > while ( -- l > - 1)
> > {
> > var _args=_alignments[l];
> > var _args_array=new Array();
> > for(var a in _args) _args_array.push(_args[a]); _align
> >
(_args_array[0],_args_array[1],_args_array[2],_args_array[3],_args_array[4],
false);
> > }
> > }
> > }
> >
> > Envoyez vos cartes de voeux depuis www.laposte.net Elles seront 
> > ensuite distribuées par le facteur : pratique et malin !
> >
> >
> > -----------------------------------------------------
> > ASNativos
> > www.5dms.com
> > subscripciones/desubscripciones
> > http://asnativos.5dms.com
> > -----------------------------------------------------
> >
> 
> 
> -----------------------------------------------------
> ASNativos
> www.5dms.com
> subscripciones/desubscripciones
> http://asnativos.5dms.com
> -----------------------------------------------------

Envoyez vos cartes de voeux depuis www.laposte.net Elles seront ensuite
distribuées par le facteur : pratique et malin !
-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------


__________ Información de NOD32, revisión 1995 (20070121) __________

Este mensaje ha sido analizado con  NOD32 antivirus system
http://www.nod32.com




-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------

Responder a