Estoy programando una galeria con Flash CS4 y AS2. La idea es que aparezca un menu vertical con las miniaturas de las imagenes, con una pelicula superior con cierto índice alga. Al desplazar el ratón verticalmente sobre el menú este se desplazará arriba y abajo, y al pasar el puntero sobre una miniatura, la película superior de ésta irá pasando a menos alfa para crear un efecto de desvanecimiento. Si hacemos click en una miniatura cargará la imagen en grande en otro clip.

Lo ideal es hacer una carga externa de las miniaturas, pero como cuando estaba todo programado no funcionaba, decidí ir por partes, para localizar el error, cambiando la carga externa de las miniaturas por una imagen de fondo de todas ellas y botones encima de ellas con las acciones cargadas dinámicamente dependiendo del nombre del botón.

Así pues, la estructura de la película es la siguiente:

_root.pas1 , donde se enclaustra todo el menú, y aplicando una mascara, limito la zona visible.
_root.pas1.galeria , donde reside una imagen de fondo.
_root.pas1.galeria.BXX , sobre esta película se aplicará el efecto alfa y las acciones, siendo el número de nodo del xml.
_root.fotoV , pelicula donde se cargarán las imágenes en grande, de orientación vertical.
_root.fotoH , pelicula donde se cargarán las imágenes en grande, de orientación horizontal.

Código en el primer frame de pas1:

Código ActionScript :

var Omega:Object;
var Boton:Object;
var url;
var ort;
var i:Boolean = false;
var f:Boolean;
var j;
var q:Number;

miXML = new XML();
miXML.ignoreWhite = true;

miXML.onLoad = function(succes) {
  if (succes) {      
    for (q = 0; q<this.firstChild.childNodes.length; q++) {
      //url de las fotos en grande
      url = "fot/"+this.firstChild.childNodes[q].attributes.ca+"/"+this.firstChild.childNodes[q].attributes.id+".jpg";
      //Orientacion de las fotos (H o V)
      ort = this.firstChild.childNodes[q].attributes.ad;
   
      if(q<10){
        j = "0"+(q+1);
      } else {
        j = q+1;
      }   
      //Designación del botón
      Boton = galeria["B"+j]; 
      //Designacion de si utilizará la película vertical u horizontal
      //dependiendo de la orientación de la imagen
      Omega = _root["foto"+ort]; 
    }
  }
}

miXML.load("var/fotos.xml");

//Definicion de las funciones que harán el desvanecimiento y acciones
function mentira(){
  f = false;
}

function verdad(){
  if(f){
    Boton._alpha --;
    if (Boton._alpha <90) {
      Boton.onRelease = function(){
        //Quita cualquier imagen que hubiese cargada con anterioridad
        unloadMovie(_root.fotoV);
        unloadMovie(_root.fotoH);
        Omega.loadMovie(url);
      }
    }
  } else {         
    Boton._alpha ++;
    if (Boton._alpha >= 100){
      Boton._alpha = 100;
    }
  }
}
               
Boton.onRollOver = function(){
  f = true;
}

setInterval(verdad, 1);
Boton.onRollOut = mentira;

//Definicion de las funciones que crearan el movimiento segun la posicion del puntero.
function Falso(){
  i = false;
}

function revisar(){
  if(i){
    pos = _ymouse - 196;
    vel = pos / 10;
    galeria._y -= vel;
    if (galeria._y>0){
      galeria._y = 0;
    } else if (galeria._y< -143){
      galeria._y = -143;
    }
  }
}

galeria.onRollOver = function(){
  i = true;
}

setInterval(revisar, 50);
galeria.onRollOut = Falso;


Pienso que puede ser un problema de variables, al ser utilizadas fuera de la función donde se definieron lo las reconoce, he probado con el parámetro _global sin éxito.

Alguien me puede echar un cable? :oops: