ActionScript - Llamar a escenas desde menú elástico

 
Vista:

Llamar a escenas desde menú elástico

Publicado por Armanda Sorel (1 intervención) el 04/11/2009 22:03:56
Hola a todos,

En primer lugar debo decir que soy verdaderamente principiante en AS2. Encontré un bonito menú elástico pero necesito que cada botón llame a una escena o identificador diferente. El código está hecho con Array y me imagino que por allí está la respuesta, pero como no sé qué colocar ni en donde no puedo hacerlo.

El código es el siguientes:
Lnombre = new Array("Home", "La Asociación", "Patrocinadores", "Premiaciones Anteriores", "Galería de Fotos", "Difusión en Medios", "Ganadores 2008", "Contáctenos");
Lfotogramas = new Array(10, 20, 30, 40);
posx = 870;
posy = 80;
distancia = 30;
prepara();
function prepara() {
vel = new Array();
long = Lnombre.length;
for (n=0; n<Lnombre.length; n++) {
vel[n] = 0;
_root.attachMovie("boton", "b"+n, n);
_root["b"+n].titulo = Lnombre[n];
_root["b"+n]._x = posx;
_root["b"+n]._y = posy+(n*distancia);
_root["b"+n].onRelease = function() {
_root.gotoAndStop(Lfotogramas[n]);
};
_root["b"+n].onRollOver = function() {
sel = this;
};
_root["b"+n].onRollOut = function() {
sel = 0;
};
}
sel = 0;
idmove = setInterval(mover, 20);
}
// Movimiento
function mover() {
for (n=0; n<Lnombre.length; n++) {
if (sel == _root["b"+n]) {
dest = 30;
destino =150;
} else {
dest = 1;
destino =100;
}
if (_root["b"+n]._currentframe<dest) {
_root["b"+n].gotoAndStop(_root["b"+n]._currentframe+1);
}
if (_root["b"+n]._currentframe>dest) {
_root["b"+n].gotoAndStop(_root["b"+n]._currentframe-1);
}

dif = destino-_root["b"+n]._xscale;
elast = 0.03;
fric = 0.9;
// trace(vel[n]);
vel[n] = (vel[n]*fric)+((dif)*elast);
_root["b"+n]._xscale += vel[n];
_root["b"+n]._yscale += vel[n];
}
}

Gracias por la ayuda, de antemano.
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

Menú elástico con llamadas a diferentes escenas

Publicado por Alejandro (369 intervenciones) el 26/06/2023 22:24:49
Para lograr que cada botón del menú elástico llame a una escena o identificador diferente, puedes hacer uso de la variable `n` dentro del bucle `for` para asignar el número de fotograma correspondiente a cada botón.

Aquí tienes una posible solución para lograrlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Lnombre = new Array("Home", "La Asociación", "Patrocinadores", "Premiaciones Anteriores", "Galería de Fotos", "Difusión en Medios", "Ganadores 2008", "Contáctenos");
Lfotogramas = new Array(10, 20, 30, 40);
posx = 870;
posy = 80;
distancia = 30;
prepara();
 
function prepara() {
    vel = new Array();
    long = Lnombre.length;
    for (n = 0; n < Lnombre.length; n++) {
        vel[n] = 0;
        _root.attachMovie("boton", "b" + n, n);
        _root["b" + n].titulo = Lnombre[n];
        _root["b" + n]._x = posx;
        _root["b" + n]._y = posy + (n * distancia);
        _root["b" + n].onRelease = function () {
            _root.gotoAndStop(Lfotogramas[this._name.charAt(1)]);
        };
        _root["b" + n].onRollOver = function () {
            sel = this;
        };
        _root["b" + n].onRollOut = function () {
            sel = 0;
        };
    }
    sel = 0;
    idmove = setInterval(mover, 20);
}
 
// Movimiento
function mover() {
    for (n = 0; n < Lnombre.length; n++) {
        if (sel == _root["b" + n]) {
            dest = 30;
            destX = 150;
        } else {
            dest = 1;
            destX = 100;
        }
        if (_root["b" + n]._currentframe < dest) {
            _root["b" + n].gotoAndStop(_root["b" + n]._currentframe + 1);
        }
        if (_root["b" + n]._currentframe > dest) {
            _root["b" + n].gotoAndStop(_root["b" + n]._currentframe - 1);
        }
 
        dif = destX - _root["b" + n]._xscale;
        elast = 0.03;
        fric = 0.9;
        vel[n] = (vel[n] * fric) + ((dif) * elast);
        _root["b" + n]._xscale += vel[n];
        _root["b" + n]._yscale += vel[n];
    }
}

En esta solución, se modificó la función `prepara()` para asignar la función `onRelease` de cada botón de la siguiente manera: `_root["b" + n].onRelease = function() { _root.gotoAndStop(Lfotogramas[this._name.charAt(1)]); }`. Esto permitirá que cada botón llame a la escena correspondiente definida en el array `Lfotogramas` según su posición en el array de nombres `Lnombre`.

De esta manera, cada botón ejecutará la función `gotoAndStop()` con el fotograma correspondiente a su posición en el array `Lfotogramas`, lo que te permitirá ir a diferentes escenas o identificadores.

Espero que esta solución te ayude a lograr el comportamiento deseado en tu menú elástico. ¡Buena suerte!
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