Foros del Web » Creando para Internet » Flash y Actionscript »

[SOLUCIONADO] botones y profundidad

Estas en el tema de botones y profundidad en el foro de Flash y Actionscript en Foros del Web. Hola, he creado un típico scroll de flash, con este manual http://www.kirupa.com/developer/flash8/scrollbar9.htm codigo del scroll: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código as2: Ver original //_root.ponDatosEncontrados(); scrolling_r = function ...
  #1 (permalink)  
Antiguo 20/03/2013, 06:20
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
botones y profundidad

Hola,
he creado un típico scroll de flash, con este manual

http://www.kirupa.com/developer/flash8/scrollbar9.htm

codigo del scroll:

Código as2:
Ver original
  1. //_root.ponDatosEncontrados();
  2. scrolling_r = function () {
  3.     var scrollHeight:Number = scrollTrack_r._height;
  4.     var contentHeight:Number = contentMain_r._height;
  5.     var scrollFaceHeight:Number = scrollFace_r._height;
  6.     var maskHeight:Number = maskedView_r._height;
  7.     var initPosition:Number = scrollFace_r._y=scrollTrack_r._y+12.5;
  8.     var initContentPos:Number = contentMain_r._y+12.5;
  9.     var finalContentPos:Number = maskHeight-contentHeight+initContentPos;
  10.     var left:Number = scrollFace_r._x+0.5;
  11.     var top:Number = scrollTrack_r._y+12.5;
  12.     var right:Number = scrollFace_r._x+0.5;
  13.     var bottom:Number = scrollTrack_r._height-scrollFaceHeight+scrollTrack_r._y+12.5;
  14.     var dy:Number = 0;
  15.     var speed:Number = 10;
  16.     var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight);
  17.    
  18.     scrollFace_r.onPress = function() {
  19.         var currPos:Number = this._y;
  20.         startDrag(this, false, left, top, right, bottom);
  21.         this.onMouseMove = function() {
  22.             dy = Math.abs(initPosition-this._y);
  23.             contentMain_r._y = Math.round(dy*-1*moveVal+initContentPos);
  24.         };
  25.     };
  26.     scrollFace_r.onMouseUp = function() {
  27.         stopDrag();
  28.         delete this.onMouseMove;
  29.     };
  30.     btnUp_r.onPress = function() {
  31.         this.onEnterFrame = function() {
  32.             if (contentMain_r._y+speed<maskedView_r._y) {
  33.                 if (scrollFace_r._y<=top) {
  34.                     scrollFace_r._y = top;
  35.                 } else {
  36.                     scrollFace_r._y -= speed/moveVal;
  37.                 }
  38.                 contentMain_r._y += speed;
  39.             } else {
  40.                 scrollFace_r._y = top;
  41.                 contentMain_r._y = maskedView_r._y;
  42.                 delete this.onEnterFrame;
  43.             }
  44.         };
  45.     };
  46.     btnUp_r.onDragOut = function() {
  47.         delete this.onEnterFrame;
  48.     };
  49.     btnUp_r.onRelease = function() {
  50.         delete this.onEnterFrame;
  51.     };
  52.     btnDown_r.onPress = function() {
  53.         this.onEnterFrame = function() {
  54.             if (contentMain_r._y-speed>finalContentPos) {
  55.                 if (scrollFace_r._y>=bottom) {
  56.                     scrollFace_r._y = bottom;
  57.                 } else {
  58.                     scrollFace_r._y += speed/moveVal;
  59.                 }
  60.                 contentMain_r._y -= speed;
  61.             } else {
  62.                 scrollFace_r._y = bottom;
  63.                 contentMain_r._y = finalContentPos;
  64.                 delete this.onEnterFrame;
  65.             }
  66.         };
  67.     };
  68.     btnDown_r.onRelease = function() {
  69.         delete this.onEnterFrame;
  70.     };
  71.     btnDown_r.onDragOut = function() {
  72.         delete this.onEnterFrame;
  73.     };
  74.    
  75.     if (contentHeight<maskHeight) {
  76.         scrollFace_r._visible = false;
  77.         btnUp_r.enabled = false;
  78.         btnDown_r.enabled = false;
  79.     } else {
  80.         scrollFace_r._visible = true;
  81.         btnUp_r.enabled = true;
  82.         btnDown_r.enabled = true;
  83.     }
  84. };

pero en la capa datos he agregado este código:

Código as2:
Ver original
  1. trace("resultados " + this);
  2.  
  3. //creamos un MovieClip vacio q funcionara como contenedor a nuestros botones
  4. this.createEmptyMovieClip("Empresas_Results",100);
  5. Empresas_Results._x = 0;
  6. //creamos un Array con los nombres de los botones y q nos dira cuantos queremos
  7. var nom_empresa:Array = _global.arrayEncontradosList_nom_;
  8.                    
  9. var button_name:Array = new Array();
  10. // Para BD a rallas
  11. var color = "fort";
  12. var escritoMC = false;
  13.  
  14. //usamos with() para escribir dentro del clip vacio
  15. with(Empresas_Results){
  16.    
  17.     //posicionamos la botonera
  18.  
  19.     //creamos un for seteado por la longitud del Array
  20.     for(i=1;i <= nom_empresa.length; i++){
  21.         escritoMC = false;
  22.         trace(nom_empresa[i]);
  23.         //declaramos una vaiable de tipo MovieClip q funcionara de modelo a nuestros botones
  24.         //le damos por valor cada boton attachado
  25.        
  26.         // 2 if para crear BD a dos colores
  27.         if ( color == "fort" && escritoMC == false ){
  28.         var modelButton:MovieClip = this.attachMovie("empresa_result_BDfort", "empresa" + i,(100+ i+1));
  29.         color = "fluix";
  30.         escritoMC = true;
  31.         }
  32.         if ( color == "fluix" && escritoMC == false ){
  33.         var modelButton:MovieClip = this.attachMovie("empresa_result_BDfluix", "empresa" + i, (100+ i+1));
  34.         color = "fort";
  35.         escritoMC = true;
  36.         }
  37.         //posicionamos los botones
  38.         modelButton._x = 30;
  39.         if( i == 0){modelButton._y = 0;}
  40.         else{
  41.         modelButton._y = (i-1)*40; //multiplicamos por 0, para q la distancia sea constante
  42.         }
  43.         //le ponemos titulo a cada boton, dados por los elementos del Array
  44.         modelButton.t.text = nom_empresa[i-1];
  45.         trace(nom_empresa[i-1]);
  46.         trace(modelButton.t.text);
  47.         //simulamos eventos RollOver y RollOut
  48.         modelButton.onEnterFrame = function (){
  49.            
  50.             //ecuacion para la trancicion de alpha
  51.             //donde: a = transparencia
  52.             //       v = velocidad de trancicion
  53.             this._alpha += (this.a - this._alpha) /this.v;
  54.                        
  55.             //si el cursor esta sobre el boton...          
  56.             if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
  57.                 //...cambia su transparencia al 50%
  58.                 this.a = 50;
  59.                 this.v = 5;
  60.                
  61.                 //sino, vuelve o se mantiene al 100%
  62.                 } else{
  63.                     this.a = 100;
  64.                     this.v = 10;
  65.                     }
  66.                 }
  67.         modelButton.onMouseDown = function (){
  68.             //for(v=1;v <= nom_empresa.length; v++){
  69.             if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
  70.                
  71.                 // saco la i de this._name
  72.                
  73.                 _root.setPositionArrayListaEncontrados(this._name);
  74.                 _root.eliminar_empresasResultados_irContenido();
  75.                
  76.                     // elimino el listado de empresas por q sino se vee en el frame2
  77.                    
  78.                
  79.             } //fin if
  80.         }//fin onMouseDown
  81. }//fin for
  82. }//fin with
  83. // Para que me active el scrolling!!
  84. _level0.textScroller_resultados_.scrolling_r();
Funciona correctamente, pero.. los botones que estan creado en esta mascara, quiero anular-les la acción de click (onrelease) si el boton no esta dentro del espacio de la mascara..


He probado en cambiar los swapdepths de los botones que quiero que se activen en vez de los mc que estan dentro de la mascara, pero se activa su onrelease igualmente.. -.-

ademas si le pongo swapdepths 1000.. voy a frame (2) y despues vuelvo al (1) el botón deja de ir.

También probé de disminuir el depth a (-16000) de los mc creados dentro de la mascar adel scroll pero su acciones siguen existiendo !!!

gracias de antemano

Última edición por marcwolf; 20/03/2013 a las 06:35
  #2 (permalink)  
Antiguo 20/03/2013, 06:40
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: botones y profundidad

Si la profundidad no afecta a las acciones de los botones, entonces debería de activar y desactivar dinámica-mente el onrelease de los botones en función de dónde estén situados al ir haciendo scroll

ayudita plis =D , sigo buscando
  #3 (permalink)  
Antiguo 20/03/2013, 10:58
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 21 años, 4 meses
Puntos: 406
Respuesta: botones y profundidad

Hola marcwolf:
Para desactivar un botón utiliza éste código en el lugar donde quieres que suceda: nombre_instancia.enabled = false;

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #4 (permalink)  
Antiguo 20/03/2013, 13:40
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: botones y profundidad

buscaba lo que sería un mc que tape las acciones de otro mc con menor profundidad.

Así.

mcBoton1 - tiene acción ir a frame 2 - profundidad = 100
mcBoton2 - tiene acción ir a frame 2 - profundidad = 100

mcMascara - no tiene ninguna acción - profundidad = 101

botonEnRoot - tiene onRealease una accion - profundidad = 150

Lo he probado y sigue haciendo caso al evento onMouseDown de mcBoton 1 y 2, y tambien al onRealease de botonEnRoot, y no puedo crear botones dinámicos prk no me deja añadirles texto dinámico a estos ..

Volviéndo al tema en cuestión, esto lo quiero hacer para no tener que hacer lo siguiente:

1) Calcular dónde esta el scroll para ir deshabilitando las acciones de cada mc si estos estan fuera de la mascara

Pero creo que crear un mc que tape las acciones de otro mc con menor profundidad no se puede... un usuario en este foro busco algo parecido y la solución viene a ser la misma pero quitando y poniéndo la acciones en onMouseDown pero más compleja.
Aquí esta:
http://www.forosdelweb.com/f16/hacer...k-otro-882363/

gracias de antemano
  #5 (permalink)  
Antiguo 21/03/2013, 06:15
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: botones y profundidad

Quiero que me confirmeis si se puede crear un mc que tape las acciones de otro mc con menor profundidad.

También si existe algún escroll con botones dinámicos dónde , por algún cosa, deshabilite las acciones de los botones que no esten dentro del espacio reservado para el scroll.

Gracias de antemano,
  #6 (permalink)  
Antiguo 21/03/2013, 09:38
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 21 años, 4 meses
Puntos: 406
Respuesta: botones y profundidad

Los MC son películas transparentes, si tienen un fondo de color lo único que hará es cubrir visualmente a los botones, pero no lo deshabilitarán.
Tienes que usar el código que te di para dehabilitarlos.

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #7 (permalink)  
Antiguo 21/03/2013, 11:30
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: botones y profundidad

lo he comprobado igualmente y sí sólo afecta visualmente... . Te he entendido perfectamente pero tengo que deshabilitarlos dinamicamente en función de si esta dentro o fuera de la caja mask cuando estan haciéndo scroll, entiendes ?

Yo he pensado en modificar el código del scroll, prk no veo ninguna otra clase de alternativa...
Código as2:
Ver original
  1. //_root.ponDatosEncontrados();
  2. scrolling_r = function () {
  3.     var scrollHeight:Number = scrollTrack_r._height;
  4.     var contentHeight:Number = contentMain_r._height;
  5.     var scrollFaceHeight:Number = scrollFace_r._height;
  6.     var maskHeight:Number = maskedView_r._height;
  7.     var initPosition:Number = scrollFace_r._y=scrollTrack_r._y+12.5;
  8.     var initContentPos:Number = contentMain_r._y+12.5;
  9.     var finalContentPos:Number = maskHeight-contentHeight+initContentPos;
  10.     var left:Number = scrollFace_r._x+0.5;
  11.     var top:Number = scrollTrack_r._y+12.5;
  12.     var right:Number = scrollFace_r._x+0.5;
  13.     var bottom:Number = scrollTrack_r._height-scrollFaceHeight+scrollTrack_r._y+12.5;
  14.     var dy:Number = 0;
  15.     var speed:Number = 10;
  16.     var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight);
  17.    
  18.     scrollFace_r.onPress = function() {
  19.         var currPos:Number = this._y;
  20.         startDrag(this, false, left, top, right, bottom);
  21.         this.onMouseMove = function() {
  22.             dy = Math.abs(initPosition-this._y);
  23.             contentMain_r._y = Math.round(dy*-1*moveVal+initContentPos);
  24.         };
  25.     };
  26.     scrollFace_r.onMouseUp = function() {
  27.         stopDrag();
  28.         delete this.onMouseMove;
  29.     };
  30.     btnUp_r.onPress = function() {
  31.         this.onEnterFrame = function() {
  32.             if (contentMain_r._y+speed<maskedView_r._y) {
  33.                 if (scrollFace_r._y<=top) {
  34.                     scrollFace_r._y = top;
  35.                 } else {
  36.                     scrollFace_r._y -= speed/moveVal;
  37.                 }
  38.                 contentMain_r._y += speed;
  39.             } else {
  40.                 scrollFace_r._y = top;
  41.                 contentMain_r._y = maskedView_r._y;
  42.                 delete this.onEnterFrame;
  43.             }
  44.         };
  45.     };
  46.     btnUp_r.onDragOut = function() {
  47.         delete this.onEnterFrame;
  48.     };
  49.     btnUp_r.onRelease = function() {
  50.         delete this.onEnterFrame;
  51.     };
  52.     btnDown_r.onPress = function() {
  53.         this.onEnterFrame = function() {
  54.             if (contentMain_r._y-speed>finalContentPos) {
  55.                 if (scrollFace_r._y>=bottom) {
  56.                     scrollFace_r._y = bottom;
  57.                 } else {
  58.                     scrollFace_r._y += speed/moveVal;
  59.                 }
  60.                 contentMain_r._y -= speed;
  61.             } else {
  62.                 scrollFace_r._y = bottom;
  63.                 contentMain_r._y = finalContentPos;
  64.                 delete this.onEnterFrame;
  65.             }
  66.         };
  67.     };
  68.     btnDown_r.onRelease = function() {
  69.         delete this.onEnterFrame;
  70.     };
  71.     btnDown_r.onDragOut = function() {
  72.         delete this.onEnterFrame;
  73.     };
  74.    
  75.     if (contentHeight<maskHeight) {
  76.         scrollFace_r._visible = false;
  77.         btnUp_r.enabled = false;
  78.         btnDown_r.enabled = false;
  79.     } else {
  80.         scrollFace_r._visible = true;
  81.         btnUp_r.enabled = true;
  82.         btnDown_r.enabled = true;
  83.     }
  84. };

Me gustaría saber si alguien sabe de algo que ya exista para este situación o tiene alguna solución para este problema.

gracias de antemano, debería de crear otro tema? esto no tiene nada que ver con el título
  #8 (permalink)  
Antiguo 21/03/2013, 11:49
 
Fecha de Ingreso: junio-2010
Mensajes: 353
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: botones y profundidad

Lo consegui gracias a _root._ymouse =D, que sino me hubiera muerto calculandolo phew

Código as2:
Ver original
  1. modelButton.onMouseDown = function (){
  2.             if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
  3.                              
  4.                                 if(_root._ymouse < mask.height ){
  5.                   // Acciones
  6.                 }
  7.  
  8.             } //fin if
  9.         }//fin onMouseDown

Botones y profundidad

Conclusión: sólo afectará visualmente el cambio de profundidad de los botones porque sus acciones seguirán existiendo para la misma posición

Etiquetas: botones, color, flash, movie
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:06.