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//_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:
Ver originaltrace("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();
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