Comunidad de diseño web y desarrollo en internet online

MovieClip Urgente

Citar            
MensajeEscrito el 25 Feb 2010 10:05 am
Buenas,

Me estoy volviendo "loco" con un MC de mi AS3.

A ver.... en mi pelicula tengo un MC donde le voy cargando fotos de la forma:

Código ActionScript :

mc.addChild(event.target.content);


El problema es simple pero no lo puedo solucionar:

en mi pelicula tambien hay botones, y quiero que cada vez que pulse un boton pueda cambiar el contenido del MC...
No se que hacer.

Mis resultados de ejecución són:
Por defecto carga 4 imagenes iniciales, i las va passando una detras de otra (con timer y tal) al pulsar un boto, en vez de mostrarme las imagenes "en relacion con el boton con una nueva pre-carga", me las mezcla todas.... vamos que en vez de tener "cada boton con sus imagenes para el MC" me hace una sopa....

imagino que cada vez que hago el click al boton tendria que borrar el MC i volver-lo a crear e inicializar.... pero no ser como hacerlo correctamente, ya que soy super novato en AS3.


Por favor, necessito solucionarlo uregentissimamente.

Muchas Gracias

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Feb 2010 12:59 pm
nadie me puede ayudar¿?

me estoy desesperando, he provado de todo, y no se encontrar la solucion.

:(

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Feb 2010 03:52 pm
mred porque no colocas algo de codigo y nos dices que es lo que quieres hacer?... Yo entiendo que tienes un slideshow de fotos y lo que quieres es que aparte, alla un control por medio de botones para irte a una foto especifica es decir:

El slideshow empieza y va ... 0,1,2,3,4 y si estas en la 3 por ejemplo cuando le piques al boton 1 te lleve a la foto 1.

Es eso lo que quieres?

Por elessar

Claber

166 de clabLevel



 

Tabasco, México

firefox
Citar            
MensajeEscrito el 25 Feb 2010 07:49 pm
Buenas elessar,

haver el codigo tiene que hacer lo siguiente:

_tenemos "x" botones.
_tenemos 1 MC (o elemento que crean apropiado) donde se visualizaran las fotos.
_cada boton hace lo siguiente: imaginemos el boton "ofertas", llama a un php, este php se situa en el directorio "ofertas" (que ya esta creado y con fotos dentro", recorre los archivos JPG (y jpeg, y png,...) los edita (redimensiona, edita...) para que hagan las medidas perfectas para mi caso (400x300), despues el php devuelve un String con todas las rutas de las imagenes ("nombre1.jpg|nombre2.jpg|..."), el AS3 recoje el string, lo separa, y pone cada nombre imagen en una posicion del array.
Hasta aquí funciona todo a las mil maravillas.
Todo seguido, mediante un timer (que funciona) cargas las imagenes en el MC, primero la imagen array[0], passa el tiempo del timer, despues la array[1],....hasta array length, donde volvemos a array[0] y tal....

Bien, supongamos, que al cargar la pelicula, por defecto, la primera acción es ejecutar la misma acción del boton "ofertas". Pues perfecto! se ven las fotos de ofertas y tal.... sin ningun problema y tan felices....

Ahora, me dedico a pulsar el botón "tienda" (o cualquier otro) (que tendria que mostrar las fotos del directorio llamado "tienda") y repetir le mismo proceso. Y Ocurre lo siguiente: se muestran las fotos de ofertas, y las fotos de tienda, se muestran con sus intervales de tiempo bien y tal pero es que Solo tendria que salir las de de "tienda" y no las de "ofertas".

Opciones:
_El array estava lleno con las otras¿? No, lo compruevo y no, el array esta con las fotos que se tendrian que mostar
_Conclusión¿? algun problema con el MC¿? Seguro, pero ni idea de como solucionarlo he probado mil cosas.


Bueno, pongo todo el codigo (de esta parte), ya que me lo aconsejais, pero no os alarmeis soy novato en AS3, y el codigo "esta del palo" y es un poco largo.

Nota: hay comentarios de codigo y un poco de "pupurrio" a causa de las pruebas. Como vereis las pruebas las hago con los botones: "inici" y "tienda".

Nota 2: "imatges_mc" es un MC que se encuentra en la escena.

Codigo:

Código ActionScript :


/*
ROCAMORA. FRAME INICI
@author: Martí Reig Jacomet
@e-mail: [email protected]

*/

//imports corresponents
import flash.events.MouseEvent;

//inicialitzacions inicials
this.stop();
var temps:Timer=new Timer(3000);


/*
codi dels botons
*/
//afegim l'event al boto
boto_inici.addEventListener(MouseEvent.CLICK, anarInici);
boto_tienda.addEventListener(MouseEvent.CLICK, anarTienda);
boto_muebles.addEventListener(MouseEvent.CLICK, anarMuebles);
boto_restauracion.addEventListener(MouseEvent.CLICK, anarRestauracion);
boto_ofertas.addEventListener(MouseEvent.CLICK, anarOfertas);
boto_galeria.addEventListener(MouseEvent.CLICK, anarGaleria);
boto_localizacion.addEventListener(MouseEvent.CLICK, anarLocalizacion);
boto_contacto.addEventListener(MouseEvent.CLICK, anarContacto);

boto_scrollUp.addEventListener(MouseEvent.CLICK, scrollUp);
boto_scrollDown.addEventListener(MouseEvent.CLICK, scrollDown);

//mirem que el mouse event sigui click
function anarInici($event:MouseEvent):void{
   temps.stop();
   temps.removeEventListener(TimerEvent.TIMER, timerHandler);  
   
   //imatges_mc.visible=false;
   
   //var m:MovieClip=new MovieClip();
   //imatges_mc.x=140;imatges_mc.y=300;imatges_mc.visible=true;
   //this.addChild(imatges_mc);
   textDinamic("inicio");
   imatgeDinamica("inicio");
   

}
function anarTienda($event:MouseEvent):void{
   //gotoAndStop("fotograma_inici");
   
   textDinamic("tienda");
   imatgeDinamica("tienda");
}
function anarMuebles($event:MouseEvent):void{
   //gotoAndStop("fotograma_inici");
   //var frame="muebles";
   textDinamic("muebles");
   imatgeDinamica("muebles");
}
function anarRestauracion($event:MouseEvent):void{
   gotoAndStop("fotograma_inici");
   //var frame="restauracion";
   textDinamic("restauracion");
   imatgeDinamica("restauracion");
}
function anarOfertas($event:MouseEvent):void{
   gotoAndStop("fotograma_inici");
   //var frame="ofertas";
   textDinamic("ofertas");
   imatgeDinamica("ofertas");
}
function anarGaleria($event:MouseEvent):void{
   gotoAndStop("fotograma_galeria");
}
function anarLocalizacion($event:MouseEvent):void{
   gotoAndStop("fotograma_localizacion");
}
function anarContacto($event:MouseEvent):void{
   gotoAndStop("fotograma_contacto");
}
function scrollUp($event:MouseEvent):void{
   contingut.scrollV --;
}
function scrollDown($event:MouseEvent):void{
   contingut.scrollV ++;
}

/*
Creació del Text Dinamic.
cridem a obteText.php li enviem el frame en que estem,
i ens retornarà el text corresponent.
*/
function textDinamic(frame):void{
   //Creamos misVariables la cual contendrá nuestros campos.
   var misVariables:URLVariables = new URLVariables();
   
   //Definimos los campos y les agregamos el valor de las cajas de texto.
   misVariables.nombre = frame;

   //Creamos la instancia pedido que contendrá los datos de envío.
   var pedido:URLRequest = new URLRequest();

   //Pasamos los datos al pedido, el método de envío y le cargamos misVariables.
   pedido.url = "obteText.php";
   pedido.method = URLRequestMethod.POST;
   pedido.data = misVariables;

   //Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   //Damos formato de Variables a cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   //Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el pedido y si hay algún error lo detectamos
   try {
      cargador.load(pedido);
   } catch (error:Error) {
      contingut.text= "Error en el texto, por favor contacte con el WebMaster.";
   }
   
   //Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal.
   function completeHandler(event:Event):void {
     //contingut.text="arribo\n";
      contingut.text=String(event.target.data.laVariablePhp);
     //contingut.text=contingut.text+"\nfiiinal";
   }
}
/*
Creació del visor dinàmic d'imatges
cridem a obteImatges.php que ens retornarà
una variable amb tots els noms de les imatges del frame
en que ens trobem, separem els noms i els col·locarem
a un array, tot seguit mostrarem les imatges 
comsecutivament.
*/
function imatgeDinamica(frame):void{
//imports necessaris
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
//Asigno la url que se va a cargar

/*
el que farem al rebre l'string del php
var miString:String = "Cristalab + Tutoriales Flash CSS PHP";
var miStringArray:Array = miString.split(" ");
trace(miStringArray[3]); //Flash 
*/

var array:Array=new Array();

//cridem a la funcio de crear l'array

generaArray(frame);

var url:String = "";
var i:Number=0;
 
//Carga la imagen
function CargarFoto() {
   
   url=array[i];
   //Creo el objeto cargador
   var loader:Loader = new Loader();
   //Le añado los listeners
   ponerListeners(loader.contentLoaderInfo);
   //Creo el objeto que contendrá la petición
   var peticion:URLRequest = new URLRequest(url);
   //Cargo la petición
   loader.load(peticion);
   
   i++;
   if(i==array.length){i=0;}
}
 
//Añade los listeners al cargador
function ponerListeners(dispatcher:IEventDispatcher):void {
   dispatcher.addEventListener(Event.COMPLETE, completeHandler2);
   dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
   dispatcher.addEventListener(Event.INIT, initHandler);
   dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
   dispatcher.addEventListener(Event.OPEN, openHandler);
   dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
}
 
//Funcion que se ejecuta cuando termina la descarga. 
function completeHandler2(event:Event):void {
   trace("completeHandler: " + event);
   //addChild(event.target.content);
   //el imatge_mc esta amagat, es una linia negre
   //a sobre d'on seria el dalt de la imatge.
   
   
   imatges_mc.addChild(event.target.content);
   
   
}
 
//Se ejecuta al recibir un código de estado HTTP
function httpStatusHandler(event:HTTPStatusEvent):void {
   trace("httpStatusHandler: " + event);
}
 
//Se distribuye cuando las propiedades del objeto cargado están disponibles
//A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
function initHandler(event:Event):void {
   trace("initHandler: " + event);
}
 
//Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un 
//archivo inexistente
function ioErrorHandler(event:IOErrorEvent):void {
   trace("ioErrorHandler: " + event);
}
 
//Se ejecuta cuando comienza la operación de carga
function openHandler(event:Event):void {
   trace("openHandler: " + event);
}
 
//Se ejecuta periodicamente mientras dura la carga
function progressHandler(event:ProgressEvent):void {
   trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
 
//Empezamos
//var tiempo=...
//tiempo = new Timer(3000);//cambia cada 3segons, l'alre són repeticions

//Le añadimos un listener para que nis vaya diciendo cuantas repeticiones lleva

temps.addEventListener("timer", timerHandler);

function timerHandler(event:TimerEvent):void {

        trace("Repetición: " + event.target.currentCount);

        trace("Delay: " + event.target.delay);
      CargarFoto();
}

temps.start();

//funcio per generar l'array

function generaArray(frame):void{
   //Creamos misVariables la cual contendrá nuestros campos.
   var misVariables:URLVariables = new URLVariables();
   
   //Definimos los campos y les agregamos el valor de las cajas de texto.
   misVariables.nombre = frame;

   //Creamos la instancia pedido que contendrá los datos de envío.
   var pedido:URLRequest = new URLRequest();

   //Pasamos los datos al pedido, el método de envío y le cargamos misVariables.
   pedido.url = "obteImatges.php";
   pedido.method = URLRequestMethod.POST;
   pedido.data = misVariables;

   //Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   //Damos formato de Variables a cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   //Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el pedido y si hay algún error lo detectamos
   try {
      cargador.load(pedido);
   } catch (error:Error) {
      contingut.text= "Error en las imagenes, por favor contacte con el WebMaster.";
   }
   
   //Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal.
   function completeHandler(event:Event):void {
     //contingut.text="arribo\n";
      //contingut.text=contingut.text+String(event.target.data.laVariablePhp);
     //contingut.text=contingut.text+"\nfiiinal";
     var miString:String=String(event.target.data.laVariablePhp);
     //contingut.text=contingut.text+miString;
     array=new Array();
     array=miString.split("|");
     for(i=0;i<array.length-1;i++){
      contingut.text=contingut.text+"\n"+String(array[i]);
   }
   }

}


}





Gracias por vuestra ayudaaaaaa :D

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Feb 2010 08:21 pm
mred te contestare como me contestaron en un post, me da algo de pereza leer tanto codigo, te sugieri poner ALGO de codigo, me esperaba algo mas depurado pero bueno jejje...

Por lo que pude detectar tu problema es que no eliminas los loaders que vas metiendo dentro del clip de pelicula " imatges_mc" que esta en raiz, lo que debes de hacer es eliminarlos todos porque por eso aparecen surtidos cuando cambias de galeria a mostrar.

Tambien otro comentario organiza de una mejor forma tu codigo ya que si esta algo confuso jajaja.

Yo tengo por ahi un codigo de un slideshow de fotos que hice pero es solo una carga de una serie de fotos no hay un menu que te cargue diferentes series de fotos como tu lo deseas pero deja ver si hoy en la noche lo adapto y te lo rolo

Saludos.

PD. Estoy casi seguro que es un o unos removeChild lo que te hace falta.

Por elessar

Claber

166 de clabLevel



 

Tabasco, México

firefox
Citar            
MensajeEscrito el 26 Feb 2010 02:44 am
mred a donde te envio el tuto ya lo tengo...

Saludos.

Por elessar

Claber

166 de clabLevel



 

Tabasco, México

firefox
Citar            
MensajeEscrito el 26 Feb 2010 07:38 am
Buenas elessar!!!!

lo primero que he hecho al levantarme es mirar tu post jeje :P

tranquilo, me imagino de sobras que da tanta pereza leer tanto codigo jeje!
ademas, soy consciente que el codigo esta "muy feo", yo tambien soy partidario del codigo "limpito y pulido" lo que passa es que soy super novato en AS3 y tengo que hacer un proyecto muy rapido, y bueno.... lo tipico supongo.

Muchas gracias por decirme donde esta el problema, lo investigaré ahora mismo :)

Muchas gracias por adaptarme un codigo y dedicarme tu tiempo, me lo puedes enviar a: [email protected]


De nuevo, muchíssimas gracias :D

Me voy a poner a la faena, y cuando reciba tu codigo me lo estudiaré y lo utilizaré :D


Gracias!!!! :)

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Feb 2010 05:25 pm
Listo mred ejemplo enviado.

Por elessar

Claber

166 de clabLevel



 

Tabasco, México

firefox
Citar            
MensajeEscrito el 03 Mar 2010 08:05 am
Buenos Dias,

elessar, decirte que me ha funcionado todo y lo he podido adaptar sin problemas a mi caso.
Me dado una grandíssima ayuda!!!!! :D

Muchííssimas Grácias!!!!!!!!

;)

Por mred

11 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Mar 2010 01:23 pm
hola podriais mandarme ami tb el ejemplo por favor??

lo quiero utilizar para algo parecido.

saludos

gracias

Por elpk

40 de clabLevel



 

safari
Citar            
MensajeEscrito el 07 Mar 2010 05:20 pm
Claro que si elpk... solo mandame tu correo jajaja

Por elessar

Claber

166 de clabLevel



 

Tabasco, México

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.