Menu desplegable en director 9

Mi pregunta es como se puede hacer y si es posible un menu desplegable al pasar con el ratón por encima de una zona (más o menos como menu de windows)se abre a la derecha una lista de submenus y elegimos el que queremos.

1 respuesta

Respuesta
1
Tienes varias formas de hacer un menú. La más sencilla es crear un menú tipo windows en la ventana de tu aplicación. Otra más compleja sería crear campos de textos que forman las opciones del menú, tendrías que ir mostrándolos y ocultándolos cuando corresponda.
Los menús tipo windows los puedes crear siguiendo estos pasos:
- En un campo de texto (no un miembro texto) por ejemplo llamado "Menu", escribes lo siguiente:
Menu1: MiMenu2
Opcion1 | go to frame 100
Opcion2 | go to frame 200
...
Menu2: MiMenu1
Opcion3 | go to frame 300
...
- Crea un script de película (puedes crearlo pulsando Ctrl+Alt+U) que ponga lo siguiente:
On startMovie
InstallMenu member "Menu"
end
Las ordenes "go to frame" puedes cambiarlas por la que quieras. Esas serán las que se ejecuten al seleccionar la opción correspondiente del menú.
Para crear un menú usando campos de texto primero creas las opciones del menú principal y las colocas en el escenario. Por ejemplo creas una opción, la colocas en el sprite 2. A continuación creas una figura y la pones de fondo de las opciones desplegables, colócala en el sprite 3. Luego creas las subopciones que se tienen que desplegar, y las colocas en los sprites a partir del 4 hacia abajo. Es importante llevar un orden porque cada submenú dependerá del sprite de la opción del menú principal.
Ahora le asignas al sprite del menú principal el siguiente script:
Global nSpritePrincipal
Global nOpciones
On mouseEnter me
nSpritePrincipal = (me.spriteNum)
nspriteFondo = nSpritePrincipal +1
nOpciones = 4
repeat with i = nSpriteFondo to (nSpriteFondo+nOpciones+1)
sprite(i).visible = true
end repeat
end
Como ves, aquí se indica en nOpciones que el submenú tendrá 4 opciones, serán las que se despliegan cuando se pulsa en esa opción del menú principal. La variable nOpciones será la única que tengas que modificar de una opción a otra del menú principal.
Ahora asignas el siguiente script al sprite que hayas colocado de fondo de las opciones del menú desplegable:
on mouseLeave me
nSpriteFondo = me.spriteNum
repeat with i = nSpriteFondo to (nSpriteFondo+nOpciones+1)
sprite(i).visible = false
end repeat
end
Ahí tienes las dos opciones: una fácil pero menos vistosa, y otra más complicada pero que puedes ajustar mejor a la interfaz de tu aplicación.
He probado la segunda opción pero al compilar me dice que espera un numero, yo he dejado lo de nSpritePrincipal y nOpciones, ¿lo tengo que cambiar es la n? O que hago mal.
En cuanto al primero tampoco me funciona, pongo un field llamado menu y escribo lo que me dices, pero lo único que hace es que se queda visible todo el rato. Siento tener tantos problemas pero estoy empezando con este programa, gracias de antemano
La opción más recomendable en la segunda, ya que con la primera creas un menú tipo windows que estará siempre visible., además, no se puede personalizar casi nada.
Respecto a la segunda opción, la idea es crear un botón principal que estará siempre visible y al pulsarle o pasar encima, se desplegará el menú de opciones. Entonces creas ese botón y lo pones en un sprite cualquiera, y luego creas un fondo para el menú desplegable, y lo colocas justo en el spride de abajo del botón principal. Por último colocas las opciones del menú desplegable justo en los sprites de debajo. Todos esos sprites tienen que estar en canales consecutivos y en ese orden.
Siguiendo ese orden, en el primer script, el que tienes que asignar al botón que despliega el menú, solo tienes que modificar el valor de nOpciones que tengo establecido en 4, y poner el número de opciones que tiene el menú desplegable. Con esto consigues que si tienes el botón en el sprite 3, y nOpciones vale 7, cuando te coloques encima del botón se mostrarán los sprites del 4 al 11, siendo el sprite 4 el fondo del menú desplegable y el resto (del 5 al 11) las opciones.
El script que tienes que colocar en el sprite que hace de fondo es:
Global nOpciones
On mouseLeave me
nSpriteFondo = me.spriteNum
repeat with i = nSpriteFondo to (nSpriteFondo+nOpciones+1)
sprite(i).visible = false
end repeat
end
Este script lo que hace es ocultar el menú desplegable cuando el cursor del ratón deja de estar colocado encima del sprite que hace de fondo.
Quizá el fallo está en que no dejé claro que nOpciones era una variable global. Por lo demás, solo tienes que seguir un orden y modificar el valor de nOpciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas