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

Como "reiniciar" o quitar un clip que se cargó

Estas en el tema de Como "reiniciar" o quitar un clip que se cargó en el foro de Flash y Actionscript en Foros del Web. Lo primero hola a todos y gracias. Mi duda es la siguiente: Estoy tratando de hacer una galería de imágenes en la cual hay 4 ...
  #1 (permalink)  
Antiguo 12/11/2009, 10:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 45
Antigüedad: 15 años, 7 meses
Puntos: 0
Como "reiniciar" o quitar un clip que se cargó

Lo primero hola a todos y gracias. Mi duda es la siguiente:

Estoy tratando de hacer una galería de imágenes en la cual hay 4 botones, y cada uno de ellos hace que se cargue una serie de miniaturas. Esto lo hacen perfecto. El problema viene cuando después de cargar unas miniaturas, cargo otras distintas. En este caso se superponen con las que había y aparecen problemas.

Me gustaría saber si existe alguna opción para que cada botón al activarse lo primero que haga es deshacer todo, y a continuación muestre sus miniaturas.

Os dejo el código que lleva uno de los botones.

Gracias de antemano.

Código:
on (release) {
// acciones en fotograma 1
stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;
// separacion-> distancia entre las imágenes
// tanto horizontal como vertical
var separacion:Number = 120;
// VARIABLES BORJIANAS
// vbles para pasar de página
var pagina_actual:Number = 1;
var num_paginas:Number;
// array donde metemos los elementos del XML
var IMG_array:Array;
// objeto XML que carga la lista de miniaturas
var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load(variableasp);
// funcion que se ejecuta al cargar el XML
function mostrarMiniaturas():Void {
	// contadores de columna y fila para
	// disponer las miniaturas
	var fila:Number = 0;
	var col:Number = 0;
	// paso los datos del XML al array
	IMG_array = this.firstChild.childNodes;
	// como caben 12 fotos por página podemos
	// saber el núm de páginas necesarias para
	// mostrar todas las fotos
	num_paginas = Math.ceil(IMG_array.length/20);
	// creo el clip donde meteremos todas las miniaturas
	var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
	lienzo.cacheAsBitmap = true;
	// lo posiciono donde nos conviene
	lienzo._x = 50;
	lienzo._y = 82;
	// y lo enmascaro con el clip situado en la
	// capa mascara. se enmascara para hacer el deslizamiento del 
	// clip cuando tengamos muchas miniaturas y no entren todas a
	// la vez en pantalla (nuestro caso)
	lienzo.setMask(mascara_mc);
	// recorro el array que contiene la lista con los nombres de 
	// los archivos de las miniaturas e invoco la función crearMiniatura
	// que es la que carga la imagen, la recoloca, le pone un pequeño
	// marco y le asigna las acciones para verla ampliada
	for (var k:Number = 0; IMG_array[k]; k++) {
		// extraigo la ruta del archivo de imagen
		//var ruta:String = "minis/"+IMG_array[k].attributes.nombre;
		// como sólo tengo tres columnas, cuando llegue a 
		// la tercera, avanzo una fila y retorno a la primera
		if (col>4) {
			col = 0;
			fila++;
		}
		// creo la miniatura. extraigo la ruta del archivo de imagen                                                                                                         
		// y la paso como tercer parámetro
		crearMiniatura(col, fila, IMG_array[k].attributes.nombre);
		col++;
	}
}
function crearMiniatura(columnaF:Number, filaF:Number, ruta:String) {
	// bajo_clip es el clip que contendrá el marco de la miniatura
	var bajo_clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("bajo_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
	// clip contendrá la imagen
	var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
	// para cargar la miniatura definimos un objeto MovieClipLoader
	// y un objeto detector de eventos
	var mi_mcl:MovieClipLoader = new MovieClipLoader();
	var miListener:Object = new Object();
	mi_mcl.addListener(miListener);
	clip.valor = "aaa";
	// cargamos la imagen
	mi_mcl.loadClip(variablemini+ruta, clip);
	miListener.onLoadStart = function(target_mc:MovieClip) {
		// cuando comienza la carga de la imagen
		// ponemos al _alpha a 0
		target_mc._alpha = 0;
	};
	miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
		// aquí podéis poner acciones para mostrar una precarga,
		// este caso no lo hemos considerado oportuno
	};
	// cuando ya se ha completado la carga y tenemos disponible el clip 
	miListener.onLoadInit = function(target_mc:MovieClip) {
		// recolocamos la imagen (todavía está oculta, con _alpha=0)
		target_mc._x = (separacion*columnaF)+(100-target_mc._width)*0.5;
		target_mc._y = (separacion*filaF)+(100-target_mc._height)*0.5;
		// recolocamos el marco que rodea a la foto
		bajo_clip._x = target_mc._x-5;
		bajo_clip._y = target_mc._y-5;
		// dibujamos el marco
		with (bajo_clip) {
			beginFill(0xffffff);
			lineStyle(1, 0xEEEEEE, 100);
			lineTo(target_mc._width+10, 0);
			lineTo(target_mc._width+10, target_mc._height+10);
			lineTo(0, target_mc._height+10);
			lineTo(0, 0);
			endFill();
		}
		// al pinchar sobre el área del marco,
		// mostramos la foto grande con la función
		// verFotoGrande
		
		bajo_clip.onRelease = function() {
    getURL(variablegrande+ruta, grande);
};
		// muestro la miniatura animando el _alpha hasta 100
		var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, 2, true);
	};
}
function verFotoGrande(ruta:String) {
	clearInterval(intervaloColor);
	// creo el clip donde irá la foto grande en una profundidad fija
	// para que se reemplace cada vez que pincho en una miniatura
	var grande:MovieClip = _root.createEmptyMovieClip("grande_mc", 2*IMG_array.length+11);
	// igual con el clip que contendrá el marco
	var bajo_grande:MovieClip = _root.createEmptyMovieClip("bajo_grande_mc", 2*IMG_array.length+10);
	// posición vertical fija
	grande._y = 100;
	// para cargar la foto grnade definimos otro objeto MovieClipLoader
	// y otro objeto detector de eventos
	var grande_mcl:MovieClipLoader = new MovieClipLoader();
	var grandeListener:Object = new Object();
	grande_mcl.addListener(grandeListener);
	// cargo la foto grande
	grande_mcl.loadClip(variablegrande+ruta, grande);
	grandeListener.onLoadStart = function(target_mc:MovieClip) {
		// aplico una transformación de color que deja el clip
		// tintado de blanco
		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) {
		// aquí podéis poner acciones para mostrar una precarga,
		// este caso no lo hemos considerado oportuno
	};
	grandeListener.onLoadInit = function(target_mc:MovieClip) {
		//trace("grandeListener.onLoadInit");
		// recolocamos la imagen (todavía está oculta)
		target_mc._x = 382+Math.round((315-target_mc._width)*0.5);
		// recolocamos el marco que rodea a la foto grande
		bajo_grande._x = target_mc._x-5;
		bajo_grande._y = target_mc._y-5;
		// dibujamos el marco
		with (bajo_grande) {
			beginFill(0xffffff);
			lineStyle(1, 0xEEEEEE, 100);
			lineTo(target_mc._width+10, 0);
			lineTo(target_mc._width+10, target_mc._height+10);
			lineTo(0, target_mc._height+10);
			lineTo(0, 0);
			endFill();
		}
		// con estas rutinas hacemos la transición de color desde el blanco
		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);
			}
		}
	};
}
// con esta función desplazo el lienzo de las miniaturas para
// pasar de página
function moverLienzo(posY:Number):Void {
	var myTween:Tween = new Tween(lienzo_miniaturas, "_y", mx.transitions.easing.Regular.easeOut, lienzo_miniaturas._y, posY, 1, true);
}
// deshabilito de inicio el botón de volver atrás
// ya se muestra la página 1
pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;
}
  #2 (permalink)  
Antiguo 12/11/2009, 10:47
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Como "reiniciar" o quitar un clip que se cargó

Hola, no sera que estas creando thumbs con _root.getNextHighestDepth lo que hace es crear una nueva miniatura en una profundidad nueva siempre, quizas lo que te sirva sea sustituir las profundidades o si quieres cargar todo de una vez entonces visible=false a las que no uses
  #3 (permalink)  
Antiguo 12/11/2009, 12:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 45
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como "reiniciar" o quitar un clip que se cargó

Y con qué puedo sustituir _root.getNextHighestDepth() para que cada nuevo clip de miniaturas quede encima del anterior? No controlo tanto de flash ...

Donde debería meter la variable visible=false si quisiese hacerlo como dices?

Muchísimas gracias por la respuesta. Un saludo!
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 14:35.