Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2013, 06:20
marcwolf
 
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