Hola LongeVie, perdona que pregunte tanto pero es que tengo otras dudas al respecto y lo he intentado de varias maneras pero no veo como resolverlas. He integrado el último codigo que me mandaste en mi codigo AS. Este codigo hace lo siguiente: crea los movieclips (Clip0, Clip1, etc.) con duplicateMovieClip y carga los datos del XML en su Clip correspondiente. Pero me han surgido 3 dudas / incidencias:
1) No se me carga la imagen 0 por defecto en el "contenedor"
2) No aparece por defecto el MC Clip0 con el estado de "pulsado"
3) Utilizo para los botones sig_btn y ant_btn el valor de "total", este valor lo inserto en
var total:Number = 20; pero se que esta mal ya que dicho valor total lo deberia de calcular según el total de registros del XML sin necesidad de asginarle un valor en el codigo.
Para que te sea más comodo reproducir la pelicula la he puesto en la siguiente dirección:
http://www.altersites.com/efimers.zip , incluye el .fla, el .xml y las imágenes.
El codigo AS que me refiero esta en la película pero tambíen lo informo aquí.
Código :
System.useCodepage = true;
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
obj_xml.load("efimers_cat.xml");
obj_xml.onLoad = function(exito) {
if (exito) {
ini( this.firstChild );
} else {
titulo_txt.text = "Error en la carga de datos";
}
};
stop();
ruta = "img/efimers"; //ruta de las imagenes
ext=".jpg"; //extensión del archivo
var total:Number = 20;
contenedor.index = 0;
contenedor.createEmptyMovieClip("_ini", 0);
contenedor.clear();
var cargador:MovieClipLoader = new MovieClipLoader();
cargador.addListener(this);
imagenes_mc.Clip0.onPress();
imagenes_mc.Clip0.onRelease();
a=3; //Posiciona el Clip0
var i:Number = 0;
function ini( aux:XMLNode )
{
for( var i=0; i < aux.childNodes.length; i++ )
{
duplicateMovieClip(imagenes_mc.Clip, "Clip"+i, i); // Se crea cada Clip
imagenes_mc["Clip"+i]._y = a; // Posiciona cada nuevo clip
a= a + 30; // Le suma posición de + 30 de _y a cada nuevo clip
this.imagenes_mc["Clip"+i].index = i;
this.imagenes_mc["Clip"+i].onPress = function () {
contenedor.index = this.index;
cargador.loadClip(ruta + this.index + ext, contenedor._ini);
}
for( var j=0; j < aux.childNodes[i].childNodes.length; j++ )
{
this.imagenes_mc["Clip"+i]["texto"+j].text = aux.childNodes[i].childNodes[j].firstChild.nodeValue;
trace(aux.childNodes[i].childNodes[j].firstChild.nodeValue);
trace(["Clip"+i]);
trace(["texto"+j]);
k = i + 1;
if (k<10) {
this.imagenes_mc["Clip"+i].texto2.text = "0" + k; // Para poner un 0 delante de los < 10
}
else {
this.imagenes_mc["Clip"+i].texto2.text = k; // Para NO poner un 0 delante de los > 10
}
// Empieza asingacion de letterspacing segun texto
var ft2:TextFormat = new TextFormat();
ft2.letterSpacing = 1;
this.imagenes_mc["Clip"+i].texto2.setTextFormat(ft2);
var ft1:TextFormat = new TextFormat();
ft1.letterSpacing = 1;
this.imagenes_mc["Clip"+i].texto0.setTextFormat(ft1);
this.imagenes_mc["Clip"+i].texto1.setTextFormat(ft1);
// Termina asingacion de letterspacins segun texto
}
}
}
function onLoadInit( target:MovieClip )
{
target._alpha = 0;
target.onEnterFrame = function()
{
if ( (this._alpha += 10) >= 100) delete this.onEnterFrame;
};
}
sig_btn.onRelease = function()
{
if (contenedor.index < total)
{
var clip:MovieClip = _root.imagenes_mc["Clip"+ (contenedor.index + 1)];
clip.onPress();
clip.onRelease();
if (contenedor.index > 10) {
yPos = -50;
imagenes_mc._y = yPos;
}
}
};
ant_btn.onRelease = function()
{
if (contenedor.index < total)
{
var clip:MovieClip = _root.imagenes_mc["Clip"+ (contenedor.index - 1)];
clip.onPress();
clip.onRelease();
}
};
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) { // Para mover imagenes_mc con el mousewheel
if(imagenes_mc._y <= 0){
imagenes_mc._y += delta;
trace(imagenes_mc._y);
}else{
imagenes_mc._y = 0
}
if(imagenes_mc._y >= 280){
imagenes_mc._y += delta;
trace(imagenes_mc._y);
}else{
imagenes_mc._y = 50
}
}
Mouse.addListener(mouseListener);
var velocidad:Number = 10;
abajo_btn.onRollOver = function() {
_root.onEnterFrame = function() {
if(imagenes_mc._y > -300) {
imagenes_mc._y -= velocidad;
}
}
}
abajo_btn.onRollOut = function() {
delete _root.onEnterFrame;
}
arriba_btn.onRollOver = function() {
_root.onEnterFrame = function() {
if(imagenes_mc._y < 0) {
imagenes_mc._y += velocidad;
}
}
}
arriba_btn.onRollOut = function() {
delete _root.onEnterFrame;
}
Muchas Gracias por tu ayuda.