Comunidad de diseño web y desarrollo en internet online

Vários botones con solo una línea diferente

Citar            
MensajeEscrito el 31 Jul 2008 12:07 pm
Tengo 3 botones que definen a través de una string el idoma, el primero castellano, después ingles y finalmente portugués.
Pero las tres funciones que definen el idioma comparten una série de acciones relacionadas a la lsita de visualización. Cuando digo comparten quiero significar que todas esas líneas son iguales.

Abajo una respresentación del problema

function castellano ( e:MouseEvent ):void
{
var idioma:String = castellano;
trace ( "a" );
trace ( "b" );
trace ( "c" );
trace ( "d" );
)

function ingles ( e:MouseEvent ):void
{
var idioma:String = ingles;
trace ( "a" );
trace ( "b" );
trace ( "c" );
trace ( "d" );
)

function portugues ( e:MouseEvent ):void
{
var idioma:String = portugues;
trace ( "a" );
trace ( "b" );
trace ( "c" );
trace ( "d" );
)

Mi ide es hacer así:

unction castellano ( e:MouseEvent ):void
{
var idioma:String = castellano;
iguais();
)

function ingles ( e:MouseEvent ):void
{
var idioma:String = ingles;
iguais();
)

function portugues ( e:MouseEvent ):void
{
var idioma:String = portugues;
iguais();
)

function iguais():void
{
trace ( "a" );
trace ( "b" );
trace ( "c" );
trace ( "d" );
}

Hay otra forma de hacer eso?

Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Jul 2008 12:58 pm
Yo haría una sola función usando e.target para saber que botón llama y un if para cambiar el idioma según el nombre de ese botón

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Ago 2008 06:44 am
Existen diversos modos.
1.-Usar la propiedad name de e.currentTarget
2.-Extender la clase SimpleButton por una que sea dynamic o por una con parámetros
3.-Crear una una clase que extienda la de Simple button y que lance listener -yo la desancosejaría-
Para 1,2 y 3, ver el tip y los comentarios de http://www.cristalab.com/tips/55116/botones-con-parametros-en-actionscript-3.html
4.-Crear una función "on fly" que llame a otra función

Código :

boton1.addEventListener(MouseEvent.MOUSE_UP,function(){clicBoton(1);});
boton2.addEventListener(MouseEvent.MOUSE_UP,function(){clicBoton(2);});
function clicBoton(valor){
}

(no será por posibilidades :wink: )

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ago 2008 05:54 pm
Inspirado en la respuesta de Jorge hice así:

btnPortugues.addEventListener(MouseEvent.CLICK, idioma_CLICK);
btnIngles.addEventListener(MouseEvent.CLICK, idioma_CLICK);
btnEspanhol.addEventListener(MouseEvent.CLICK, idioma_CLICK);

function idioma_CLICK (evento:MouseEvent):void
{
switch ( evento.target.name )
{
case "btnPortugues":
indice = "portugues";
break;
case "btnIngles":
indice = "ingles";
break;
case "btnEspanhol":
indice = "espanhol";
break;
}
// Y aqui el código común a todos los botones
}

No sabía que se podían mandar parámetros directamente desde la función que dispara el evento. Podés por favor hablar un poco sobre eso o indicar algún fuente que trate ese tema?
Desde ya muchas gracias

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Ago 2008 06:08 pm
Yep, la ayuda lo explica bastante bien. Busca la entrada MouseEvent en el diccionario de ActionScript, y allí verás por ejemplo la diferencia entre target y currentTarget de un evento, entre otras cosas. Es importante el evento MouseEvent porque se usa mucho con respecto a las interacciones del usuario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Ago 2008 12:30 pm
Gracias Jorge voy a leer ese tópico.

Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.