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
//_root.ponDatosEncontrados(); scrolling_r = function () { var scrollHeight:Number = scrollTrack_r._height; var contentHeight:Number = contentMain_r._height; var scrollFaceHeight:Number = scrollFace_r._height; var maskHeight:Number = maskedView_r._height; var initPosition:Number = scrollFace_r._y=scrollTrack_r._y+12.5; var initContentPos:Number = contentMain_r._y+12.5; var finalContentPos:Number = maskHeight-contentHeight+initContentPos; var left:Number = scrollFace_r._x+0.5; var top:Number = scrollTrack_r._y+12.5; var right:Number = scrollFace_r._x+0.5; var bottom:Number = scrollTrack_r._height-scrollFaceHeight+scrollTrack_r._y+12.5; var dy:Number = 0; var speed:Number = 10; var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight); scrollFace_r.onPress = function() { var currPos:Number = this._y; startDrag(this, false, left, top, right, bottom); this.onMouseMove = function() { dy = Math.abs(initPosition-this._y); contentMain_r._y = Math.round(dy*-1*moveVal+initContentPos); }; }; scrollFace_r.onMouseUp = function() { stopDrag(); delete this.onMouseMove; }; btnUp_r.onPress = function() { this.onEnterFrame = function() { if (contentMain_r._y+speed<maskedView_r._y) { if (scrollFace_r._y<=top) { scrollFace_r._y = top; } else { scrollFace_r._y -= speed/moveVal; } contentMain_r._y += speed; } else { scrollFace_r._y = top; contentMain_r._y = maskedView_r._y; delete this.onEnterFrame; } }; }; btnUp_r.onDragOut = function() { delete this.onEnterFrame; }; btnUp_r.onRelease = function() { delete this.onEnterFrame; }; btnDown_r.onPress = function() { this.onEnterFrame = function() { if (contentMain_r._y-speed>finalContentPos) { if (scrollFace_r._y>=bottom) { scrollFace_r._y = bottom; } else { scrollFace_r._y += speed/moveVal; } contentMain_r._y -= speed; } else { scrollFace_r._y = bottom; contentMain_r._y = finalContentPos; delete this.onEnterFrame; } }; }; btnDown_r.onRelease = function() { delete this.onEnterFrame; }; btnDown_r.onDragOut = function() { delete this.onEnterFrame; }; if (contentHeight<maskHeight) { scrollFace_r._visible = false; btnUp_r.enabled = false; btnDown_r.enabled = false; } else { scrollFace_r._visible = true; btnUp_r.enabled = true; btnDown_r.enabled = true; } };
pero en la capa datos he agregado este código:
Código as2:
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..Ver original
trace("resultados " + this); //creamos un MovieClip vacio q funcionara como contenedor a nuestros botones this.createEmptyMovieClip("Empresas_Results",100); Empresas_Results._x = 0; //creamos un Array con los nombres de los botones y q nos dira cuantos queremos var nom_empresa:Array = _global.arrayEncontradosList_nom_; var button_name:Array = new Array(); // Para BD a rallas var color = "fort"; var escritoMC = false; //usamos with() para escribir dentro del clip vacio with(Empresas_Results){ //posicionamos la botonera //creamos un for seteado por la longitud del Array for(i=1;i <= nom_empresa.length; i++){ escritoMC = false; trace(nom_empresa[i]); //declaramos una vaiable de tipo MovieClip q funcionara de modelo a nuestros botones //le damos por valor cada boton attachado // 2 if para crear BD a dos colores if ( color == "fort" && escritoMC == false ){ var modelButton:MovieClip = this.attachMovie("empresa_result_BDfort", "empresa" + i,(100+ i+1)); color = "fluix"; escritoMC = true; } if ( color == "fluix" && escritoMC == false ){ var modelButton:MovieClip = this.attachMovie("empresa_result_BDfluix", "empresa" + i, (100+ i+1)); color = "fort"; escritoMC = true; } //posicionamos los botones modelButton._x = 30; if( i == 0){modelButton._y = 0;} else{ modelButton._y = (i-1)*40; //multiplicamos por 0, para q la distancia sea constante } //le ponemos titulo a cada boton, dados por los elementos del Array modelButton.t.text = nom_empresa[i-1]; trace(nom_empresa[i-1]); trace(modelButton.t.text); //simulamos eventos RollOver y RollOut 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; } } modelButton.onMouseDown = function (){ //for(v=1;v <= nom_empresa.length; v++){ if (this.hitTest(_root._xmouse, _root._ymouse, true)) { // saco la i de this._name _root.setPositionArrayListaEncontrados(this._name); _root.eliminar_empresasResultados_irContenido(); // elimino el listado de empresas por q sino se vee en el frame2 } //fin if }//fin onMouseDown }//fin for }//fin with // Para que me active el scrolling!! _level0.textScroller_resultados_.scrolling_r();
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