hola me gustaria realizar un menu de un numero de botones que al pulsar en uno se quede pulsado. Todo esto en AS3
No se por donde cogerlo.....alguien me ayuda a hacerlo??
un saludo
| |||
boton que se quede pulsado y pasar parametros desde una funcion de una clase(AS3) hola me gustaria realizar un menu de un numero de botones que al pulsar en uno se quede pulsado. Todo esto en AS3 No se por donde cogerlo.....alguien me ayuda a hacerlo?? un saludo
__________________ www.davidhs.es diseño Grafico y Web Última edición por Dustito; 15/11/2009 a las 10:04 |
| |||
Respuesta: boton que se quede pulsado (AS3) Haber me explico, tengo hecha una galeria de imagenes con categorias, solo me queda crear los botones de la galeria y al pinchar el boton de la categoria que se quede pulsado el boton de la categoria que pinche y los demas desmarcados. En principio creo lo botones llamando auna clase boton la cual le doy el nombre de la categoria, asi saco tanto botones como categorias tenga... El problema esta a la hora de hacer que al clickear el boton se quede pulsado y al pulsar otro ese anterior se desmarque y se active el nuevo... Otro problema que tengo es que nose como indicarle al codigo principal la categoria que ha sido clickeada, tenia una variable donde indico el id de la categoria seleccionada pero nose como pasarle ese parametro desde la funcion de la clase boton al codigo principal... os pego el codigo haber si alguien me ayuda!! CODIGO PRINCIPAL
Código:
CLASE BOTON:var i:Number; var tb:MovieClip; var vis:MovieClip; var dirX:Number = 0; var dirY:Number = 0; var ldr:Loader; var xmlLoader:URLLoader = new URLLoader(); var xmlData:XML = new XML(); var categoria:Number =1; var foto; Loader; var xButton:Number = 0; xmlLoader.load(new URLRequest("imagenes.xml")); xmlLoader.addEventListener(Event.COMPLETE, CargaDirecta); function CargaDirecta(e:Event):void { xmlData = new XML(e.target.data); //pruebas trace(xmlData.categoria.(@id==categoria).foto.(@id=="1").@name); trace(xmlData.categoria.(@id==categoria).foto.length()); trace(xmlData.categoria.length()); trace(xmlData.categoria.(@id==categoria).foto.(@id=="1").@thumb); //pruebas //saco tanto botones como categorias, enviandole el nombre de la categorita for (i = 1; i <= xmlData.categoria.length(); i++) { // Instancializamos la clase ButtonStd var myButton:ButtonStd = new ButtonStd (xmlData.categoria.(@id==i).@name, i); // Ubicamos el nuevo ButtonStd // ( fijaros que no es _x y _y ) myButton.x = 10+xButton; myButton.y = 10; xButton=+100; // Añadimos el ButtonStd al escenario // esto equivale a un attachMovie addChild(myButton); } //recorro en el XML la categoria seleccionada para mostrar sus thumbnails for (i = 1; i <= xmlData.categoria.(@id==categoria).foto.length(); i++) { tb = new MovieClip(); tb.x = 75 * dirX + 5; tb.y = 75 * dirY + 50; addChild(tb); dirX++; if (dirX == 2) { dirX = 0; dirY++; } CargarThumbs(); } } function CargarThumbs():void { //cargo la imagen en el movie clip y lo muestro ldr = new Loader(); ldr.load(new URLRequest(xmlData.categoria.(@id==categoria).foto.(@id==i).@thumb)); tb.addChild(ldr); Click(i); } function Click(n:Number):void { function alClick(e:MouseEvent):void { //Muestro la imagen en grande si pinchas en el thumbnail vis = new MovieClip(); foto = new Loader(); foto.load(new URLRequest(xmlData.categoria.(@id==categoria).foto.(@id==n).@image)); vis.x = 475 - (xmlData.categoria.(@id==categoria).foto.(@id==n).@tam)/2; vis.y = 50; addChild(vis); vis.addChild(foto); } ldr.addEventListener(MouseEvent.CLICK, alClick); }
Código:
package { // Contiene la libreria para objectos MovieClip import flash.display.MovieClip; // Contiene la libreria para manipulacion de eventos del raton import flash.events.MouseEvent; // Contiene la libreria para manipulacion de textos import flash.text.TextField; // Definimos el nombre de la clase // Debe empezar por mayusculas y tener // el mismo nombre que el archivo que la contiene public class ButtonStd extends MovieClip { var idBoton:Number; // Método constructor que inicializa la clase public function ButtonStd(_label:String, idBoton:Number) { this._label = _label; this.idBoton = idBoton; this.setEvents(); } // Metodo 'setter' para modificar la etiqueta del boton public function set _label(_label:String):void { // Usamos la función getChildByName cuando queremos buscar un // elemento creado directamente en este caso y con nombre //label_txt. Por otra parte decimos que dicho elemento es // de tipo TextField mediante as [tipo] this.label_txt = getChildByName("label_txt") as TextField; label_txt.text = _label; } // Metodo para configurar los eventos asociados al boton private function setEvents():void { // asociamos un metodo al evento de pulsar el raton addEventListener(MouseEvent.CLICK, click_handler); // asociamos un metodo al evento de pasar por encima con el raton addEventListener(MouseEvent.MOUSE_OVER, over_handler); // asociamos un metodo al evento salir del boton con el raton addEventListener(MouseEvent.MOUSE_OUT, out_handler); } private function click_handler(event:MouseEvent):void { trace('click',this.label_txt.text, this.idBoton); } private function over_handler(event:MouseEvent):void { this.label_txt.textColor = 0x000000; } private function out_handler(event:MouseEvent):void { this.label_txt.textColor = 0x999999; } } }
__________________ www.davidhs.es diseño Grafico y Web |
| |||
Respuesta: boton que se quede pulsado (AS3) Lo que necesitas hacer para que el boton al precionar te quede en el estado activo, y no en reposo es la propiedad (ENABLED). Suerte, puedes ver la propiedad (ENABLED) en F11 de flash. |