ActionScript - Bucle para Botones

 
Vista:

Bucle para Botones

Publicado por chavez (1 intervención) el 22/01/2009 15:58:15
tengo varios botones bt1, bt2,bt3, etc.

lo que necesito es mediante un bucle FOR asignar la misma funcion a todos pero sin tener que nombrarlos uno por uno...algo similar a esto pero no me funciona que estoy haciendo mal?

for(var i:Number = 0; i<10; i++){
bt[i].onRollOut = function(){
_root.pic.master.z0[i].alphaTo(0, 1);
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Asignar función a varios botones mediante un bucle FOR

Publicado por Alejandro (369 intervenciones) el 24/06/2023 00:32:50
La solución para asignar la misma función a varios botones utilizando un bucle FOR es la siguiente:

1
2
3
4
5
6
for (var i:Number = 0; i < 10; i++) {
    var currentButton:MovieClip = this["bt" + i]; // Accede al botón utilizando el nombre concatenado
    currentButton.onRollOut = function():Void {
        _root.pic.master["z" + i].alphaTo(0, 1); // Accede al objeto "z" utilizando el nombre concatenado
    }
}

En el código anterior, se utiliza la variable `i` en el bucle FOR para acceder a cada botón y asignar la función `onRollOut`. Sin embargo, debido a cómo se manejan los ámbitos de las variables en ActionScript 2.0 (AS2), debes crear una nueva variable dentro del bucle llamada `currentButton` para almacenar la referencia al botón actual. De lo contrario, al ejecutarse la función `onRollOut`, siempre se haría referencia al último valor de `i`.

Además, asegúrate de que el objeto `pic.master` y los elementos `z0`, `z1`, `z2`, etc., existan y estén correctamente nombrados en tu estructura de película.

Con esta solución, se asignará la función a cada botón y se accederá al objeto "z" correspondiente utilizando el valor de `i` en el nombre concatenado.

Recuerda que, en ActionScript 2.0, es importante tener en cuenta el manejo de los ámbitos y la sintaxis específica de este lenguaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar