Mediante este tip voy a explicar cómo crear una botonera dinámica como esta:
Para empezar vamos a crear un clip en nuestra biblioteca que sera nuestro botón modelo, también creamos un campo de texto dinamico instanciado como "t"
Luego, cuando ya tenemos nuestro botón en la biblioteca, hacemos click con el boton derecho, y en la parte de vinculación le damos un nombre y aplicamos la opción de vinculación para Actionscript y exportar en el primer fotograma.
Ahora vamos con el código.
Primero creamos un MovieClip vacio q contendrá los botones.
Código :
this.createEmptyMovieClip("botonera",this.getNextHighestDepth());
Luego declaramos un Array que contendrá la cantidad de botones a crear y sus nombres.
Código :
var labels:Array = Array("home","about","services","contact");
Ahora con width() escribimos dentro del clip vacio para evitar problemas de rutas.
Código :
with(botonera){ }
Primero posicionamos la botonera:
Código :
with(botonera){ this._x = 50; }
Luego creamos un for seteado por la longitud del Array.
Código :
with(botonera){ this._x = 50; for(i=1;i <= labels.length; i++){ } }
Ahora declaramos una vaiable de tipo MovieClip que funcionara de modelo a nuestros botones y le damos por valor cada boton attachado.
Código :
with(botonera){ this._x = 50; for(i=1;i <= labels.length; i++){ var modelButton:MovieClip = this.attachMovie("boton", "boton"+i , this.getNextHighestDepth ()); } }
Posicionamos los botones.
Código :
with(botonera){ this._x = 50; for(i=1;i <= labels.length; i++){ var modelButton:MovieClip = this.attachMovie("boton", "boton"+i , this.getNextHighestDepth ()); modelButton._x = 0; modelButton._y = ((i*0)+this._height) +5; //multiplicamos por 0, para q la distancia sea constante } }
Le ponemos título a cada botón, dados por los elementos del Array.
Código :
with(botonera){ this._x = 50; for(i=1;i <= labels.length; i++){ var modelButton:MovieClip = this.attachMovie("boton", "boton"+i , this.getNextHighestDepth ()); modelButton._x = 0; modelButton._y = ((i*0)+this._height) +5; //multiplicamos por 0, para q la distancia sea constante modelButton.t.text = labels[i-1]; } }
Ahora eventos de rollOver y rollOut.
Código :
with(botonera){ this._x = 50; for(i=1;i <= labels.length; i++){ var modelButton:MovieClip = this.attachMovie("boton", "boton"+i , this.getNextHighestDepth ()); modelButton._x = 0; modelButton._y = ((i*0)+this._height) +5; //multiplicamos por 0, para q la distancia sea constante modelButton.t.text = labels[i-1]; modelButton.onEnterFrame = function (){ //ecuacion para la trancicion de alpha //donde: a = transparencia // v = velocidad de trancicion this._alpha += (this.a - this._alpha) /this.v; //si el cursor esta sobre el boton... if (this.hitTest(_root._xmouse, _root._ymouse, true)) { //...cambia su transparencia al 50% this.a = 50; this.v = 5; //sino, vuelve o se mantiene al 100% } else{ this.a = 100; this.v = 10; } } } } }
Finalmente para eventos de click usamos onMouseDown()
Código :
modelButton.onMouseDown = function (){ if (this.hitTest(_root._xmouse, _root._ymouse, true)) { if(this._name == "boton1"){ trace("welcome home")//acciones } if(this._name == "boton2"){ trace("about us")//acciones } if(this._name == "boton3"){ trace("our services")//acciones } if(this._name == "boton4"){ trace("contact us")//acciones } } }
Cada botón nos muestra un mensaje distinto en el output.
Cómo ven para añadir otro botón solo deben agragar un elemento más al Array
Aquí pueden descargar el .fla
Espero les sirva
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por CarlosRuminott el 06 de Noviembre de 2007
*esperando la version de clases
Por CarlosRuminott el 06 de Noviembre de 2007
no importa lo voy a hacer manualmente.
Por Otaku RzO el 07 de Noviembre de 2007
Código :
constante??? es decir siempre cero???Esto debería ser solamente:
Código :
Por Raxiro el 07 de Noviembre de 2007
Otaku ya se dio cuenta de un error pero..
La onda sería así..
Código :
Y para hacerlo mas practico sería cuestión de crear una var "distancia" donde ahi la modificamos a gusto, sin tener que buscar ese 5 escondido.
Otra cosa,, para los estados de over y out, definitivamente no usaría onEnterFrame, sino preguntale a Freddie
De ultimaaaa le haces un enterframe que inicie cuando estás sobre el boton, y que este se elimine cuando se sale de el y ya.
Yo por lo general lo que hago (que ya me lo tome como mi estandar de botoneras) es dentro del MC le creo 2 o 3 labels en la linea de tiempo(o más si es necesario). Algo como INN, OUT, OFF, y por ejemplo
Código :
Esto es bueno por si queremos hacer algun efecto que no podemos lograr en AS o que nos llevaría mucho menos tiempo realizarlo "manualmente". O también podría suceder si no sabemos tanto AS como para crear efectos "zarpados" (es mi caso )
Saludos chicaos.
Por Raxiro el 07 de Noviembre de 2007
Código :
Por Raxiro el 07 de Noviembre de 2007
Código :
Por Otaku RzO el 07 de Noviembre de 2007
En si debería ser:
Código :
Pero si no quieren el espacio vacío al inicio:
Código :
Por penHolder el 08 de Noviembre de 2007
Por jose el 20 de Noviembre de 2007
Por el 25 de Febrero de 2008
Por flashreloco el 25 de Febrero de 2008
sarj :
Si en vez de preguntar checaras primero el tip completo? haber si esto te dice donde cambiarle
Código :
Por Mariana el 16 de Julio de 2008
Por fis, necesito respuesta o ayuda, desde ya gr
Por melquisedecwt el 03 de Agosto de 2008
Por abarabar el 24 de Marzo de 2009
Por fabian el 21 de Noviembre de 2013