Las rarezas de los botones
HacÌa aproximadamente un par de aÒos que no tenÌa que vÈrmelas con un botÛn, pero ayer en el curro recibimos una avalancha de elementos gr·ficos de un freelance, entre otros una tacada de botones.
Esos botones deben presentar un texto din·mico, y contienen dos campos de texto distintos. Uno para el estado normal, y otro para el rollover. AsÌ que all· que me lancÈ
class net.designnation.UI.buttonHandler
{
public static function setHandlers( instanceName: MovieClip, text: String )
{
instanceName[ "theText" ] = text;
instanceName.onRollOver = function( )
{
this.tf.text = this[ "theText" ];
}
instanceName.onRollOut = function( )
{
this.tf.text = this[ "theText" ];
}
}
}
No funcionÛ. AsÌ que intentÈ tracear el contenido del botÛn:
class net.designnation.UI.buttonHandler
{
public static function setHandlers( instanceName: MovieClip, text: String )
{
instanceName[ "theText" ] = text;
instanceName.onRollOver = function( )
{
for ( var k in this )
{
trace( k );
}
this.tf.text = this[ "theText" ];
}
instanceName.onRollOut = function( )
{
this.tf.text = this[ "theText" ];
}
}
}
Y aquÌ llegÛ la sorpresa. En el primer rollover la traza fue:
tabIndex
getDepth
enabled
useHandCursor
instance2
Pero en el rollout, instance2 cambiÛ a instance3. Y en el siguiente rollover a instance4, y en el rollout instance5, y asÌ sucesivamente.La primera vez que veÌa algo parecido, aunque supongo que para muchos de vosotros no ser· ninguna novedad. øLa soluciÛn?: pues nada elegante, ya que se basa precisamente en ese comportamiento tan extraÒo:
class net.designnation.UI.buttonHandler
{
public static function setHandlers( instanceName: MovieClip, text: String )
{
instanceName[ "theText" ] = text;
instanceName.onRollOver = function( )
{
for ( var k in this )
{
if ( k.substring( 0,8 )== "instance" && k.text != undefined )
{
this[ k ].text = this[ "theText" ];
}
}
}
instanceName.onRollOut = function( )
{
for ( var k in this )
{
if ( k.substring( 0,8 )== "instance" && k.text != undefined )
{
this[ k ].text = this[ "theText" ];
}
}
}
}
}
øDurante cu·nto tiempo funcionar·? Pues no lo sÈ, la verdad.
Una razÛn m·s para no volver a utilizar botones, y hacerlo todo con movieclips
Comentarios
La verdad es que los botones yo sÛlo los uso para cosas super simples, si veo que luego tendr·n alguna cosa aÒadida uso directamente un movieClip.
Quiz· hay que currarse los rollovers y rollouts a mano y en codigo, pero al final siempre es mejor de cara a futuras actualizaciones, ya que no tienen comportamientos extraÒos como les pasa a los botones.
Publicado por: dasso | Abril 13, 2004 10:44 AM
Desde luego, yo hacÌa muchÌsimo tiempo que no tenÌa que vÈrmelas con un botÛn, y espero que pase mucho m·s antes de la prÛxima vez...
Publicado por: Cesar Tardaguila | Abril 13, 2004 10:47 AM
Yo recuerdo que una vez alguien en una de las listas de distribuciÛn preguntaba que porquÈ flash seguÌa d·ndote la posibilidad de crear un objeto de tipo botÛn o de tipo gr·fico cuando luego sÛlo usas mc's. Bueno, ahora que trabajo con animadores, me han explicado que para ellos es mejor usar gr·ficos que mc's para las animaciones porque bla bla ....( explicaciÛn larga ). Pero lo de los botones todavÌa nadie me ha dado una explicaciÛn de porquÈ se usan. Yo personalmente, hago como que no existen.
Publicado por: Javier Tard·guila | Abril 13, 2004 02:25 PM