Foros del Web » Creando para Internet » Flash y Actionscript »

galeria xml as3

Estas en el tema de galeria xml as3 en el foro de Flash y Actionscript en Foros del Web. Hola soy nueva en as3 estoy creando una galería de imágenes, ya conseguí que me mostrara las imágenes y que al hacer clic en una ...
  #1 (permalink)  
Antiguo 13/09/2010, 15:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
galeria xml as3

Hola soy nueva en as3 estoy creando una galería de imágenes, ya conseguí que me mostrara las imágenes y que al hacer clic en una aparezca grande, ahora lo que necesito es que en la miniatura aparezca el nombre de la imagen, y cuando aparezca la grande muestre las descripciones de la foto.
Lo que he logrado es que me aparezca solo el ultimo nombre que aparece en el xml.
El código:



stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;

var separacion:Number = 116;

var pagina_actual:Number = 1;
var num_paginas:Number;

var IMG_array:Array;

var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("productos.xml");
ML
function mostrarMiniaturas():Void {
var col:Number = 0;

IMG_array = this.firstChild.childNodes;

num_paginas = Math.ceil(IMG_array.length/4);
// creo el clip donde meteremos todas las miniaturas
var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
lienzo.cacheAsBitmap = true;
lienzo._x = 262;
lienzo._y = 175;

lienzo.setMask(mascara_mc);

for (var k:Number = 0; IMG_array[k]; k++) {

crearMiniatura(col, fila, k);
nombre_img.text=IMG_array[k].attributes.nombre;
col++;
}
}
function crearMiniatura(columnaF:Number, filaF:Number, k:Number) {

var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_"+fil aF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());

var mi_mcl:MovieClipLoader = new MovieClipLoader();
var nombre:TextField = new TextField();
var miListener:Object = new Object();
mi_mcl.addListener(miListener);
clip.valor = "aaa";

mi_mcl.loadClip("mini/"+IMG_array[k].attributes.imag, clip);


miListener.onLoadStart = function(target_mc:MovieClip) {

target_mc._alpha = 0;
};
miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {

};

miListener.onLoadInit = function(target_mc:MovieClip) {
target_mc._x = (separacion*columnaF)+(100-target_mc._width)*0.5;
target_mc._y = (separacion*filaF)+(100-target_mc._height)*0.5;

clip.onRelease = function() {
verFotoGrande(k);
};

var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 175, 2, true);
};
}
function verFotoGrande(k:Number) {
clearInterval(intervaloColor);

var grande:MovieClip = _root.createEmptyMovieClip("grande_mc",2*IMG_array .length+11);

grande._y = 350;

var grande_mcl:MovieClipLoader = new MovieClipLoader();
var grandeListener:Object = new Object();
grande_mcl.addListener(grandeListener);

grande_mcl.loadClip("originales/"+IMG_array[k].attributes.imag, grande);
grandeListener.onLoadStart = function(target_mc:MovieClip) {

myColor = new Color(target_mc);
myColorTransform = new Object();
myColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:0};
myColor.setTransform(myColorTransform);
};
grandeListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {

};
grandeListener.onLoadInit = function(target_mc:MovieClip) {

target_mc._x = 173+Math.round((315-target_mc._width)*0.5);

var indiceColor:Number = 255;
intervaloColor = setInterval(cambiarColor, 10);
function cambiarColor() {
myColorTransform = {ra:100, rb:indiceColor, ga:100, gb:indiceColor, ba:100, bb:indiceColor, aa:100, ab:0};
myColor.setTransform(myColorTransform);
indiceColor -= 2;
if (indiceColor == -1) {
clearInterval(intervaloColor);
}
}
};
}

function moverLienzo(posX:Number):Void {
var myTween:Tween = new Tween(lienzo_miniaturas, "_x", mx.transitions.easing.Regular.easeOut, lienzo_miniaturas._x, posX, 1, true);
}

pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;
  #2 (permalink)  
Antiguo 13/09/2010, 17:50
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 8 meses
Puntos: 214
Respuesta: galeria xml as3

Hola
bueno, pues si te refieres al último nombre con esto

Código actionscript:
Ver original
  1. nombre_img.text=IMG_array[k].attributes.nombre;

es porque esta dentro del for, y como siempre
asignas cada vez que se ejecuta una iteración,
el valor es sobreescrito, cosa distinta si tuvieras tantos nombre_img como imagenes estas mostrando, por ej algo así
Código actionscript:
Ver original
  1. //habrian nombre_img0, nombre_img1, etc etc
  2. this['nombre_img'+k].text=IMG_array[k].attributes.nombre;

ahora, veo que tienes esto:
Código actionscript:
Ver original
  1. var nombre:TextField = new TextField();

pero no lo usas en otro lado, podrias hacer uso de eso
para el fin que estas comentando, habria que ver si la descripción
y el nombre lo estas mostrando en un campo "común", es decir,
que la idea sea que un solo campo text sirva para mostrar cada
descripción o nombre de imagen

(en cuyo caso serviria lo que tienes, pero ubicandolo en una función
que sea ejecutada cada vez que se de clic a una imagen, en cuyo caso
se necesitaria el id de cada imagen para buscar el elemento xml correspondiente)

o si se quieren crear tantos
como imagenes hayan
(en cuyo caso seria creación en ejecución de varias cosas)

pregunto algo más, dices que estas recien desempacada en as3,
así las cosas, estas siguiendo algún tutorial? o similar?
te recomiendo que si la respuesta es false, pues revises
algunos para que te des una mejor idea del asunto

saludos y suerte
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: galeria, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:59.