Comunidad de diseño web y desarrollo en internet online

Como hacer un banner de fotos que rote infinito

Citar            
MensajeEscrito el 22 Abr 2010 06:19 am
Buenas Noches...

De antemano gracias por su ayuda... Estoy haciendo un sitio web de una empresa, entonces tomé unas fotos, y lo que quiero es hacer un banner de 700 * 200 en flash. Donde las diferentes fotos roten... pero no del estilo de una aparece y otra desaparece sino como un tren. Una detras de otra y que cuando una salga de la imagen por la derecha entre por la izquierda. es como un loop infinito de imagenes horizontal.. como puedo hacerlo? en AS3. Tan solo he podido hacer que la imagen se mueva con la funcion asi:

imagenes_mc.x = +velocidad;

donde velocidad es 5 e imagenes_mc es un MC donde tengo las imagenes. No se si se tengan que colocar por separado como diferentes mc o se puede que mientras el mc donde estan todas las imagenes esta saliendo por la derecha vaya entrando por la izquierda a la vez.

Gracias

Por nesivapama

11 de clabLevel



 

Bogota, Colombia

chrome
Citar            
MensajeEscrito el 22 Abr 2010 01:36 pm
Idea: cada foto es un MC (nonbres de instancia foto1, foto2 ... fotoX) los vas moviendo en un onEnterFrame, cuando el primero supera cierta posición x lo mueves al principio de la cola.
Idea 2: Usa array con splice y push para referenciar y mover los MC

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2010 01:01 am
Gracias por responder, OnEnterFrame es AS2, y yo quiero hacerlo con AS3... pero es lo de menos, porque simplemente cambio el evento.

Lo que no me queda claro es como hacer el array... tu me podrías ilustrar como puede ser? gracias!

Por nesivapama

11 de clabLevel



 

Bogota, Colombia

chrome
Citar            
MensajeEscrito el 23 Abr 2010 02:03 am
EL array funciona como un listado donde tienes todas las imágenes en orden, cuando llega a un punto quitas el primero y lo pones último, la idea es algo así:

Código ActionScript :

var speed:Number=10; //velocidad a la que mueven
var anchoFoto:Number=100; //ancho de las fotos
var movies:Array=new Array(movie1,movie2,movie3,movie4,movie5,movie6,movie7,movie7);
this.addEventListener(Event.ENTER_FRAME, mueve)
function mueve(evt:Event) {
        //muevop todas las fotos
   for (var i:Number=0; i<movies.length; i++) {
      movies[i].x-=speed;
   }
        //cambio al otro lado la que se fue de escena
   if (movies[0].x<=anchoFoto) {
      movies[0].x+=anchoFoto*movies.length;
      movies.push(movies.splice(0, 1));
   }
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2010 08:44 am
Hola... te cuento. Mira mi codigo lo tengo así:

Código ActionScript :

var speed:Number=2; //velocidad a la que mueven
var movies:Array=new Array(image1,image2,image3,image4,image5,image6,image7);
this.addEventListener(Event.ENTER_FRAME, mueve)


function mueve(evt:Event)
{
   //muevo todas las fotos

   for (var i:Number=0; i<movies.length; i++)
   {
            movies[i].x-=speed;
         
   }
}


y me mueve los MC muy bien pero le quite por ahora esta parte que tu me diste así:

Código ActionScript :

var anchoFoto:Number=100; //ancho de las fotos

if (movies[0].x<=anchoFoto)
   {
       movies[0].x+=anchoFoto*movies.length;
      movies.push(movies.splice(0, 1));
   }


porque lo que hace es que me deja la primera imagen al final pero estática, y me desaparece las otras pero no las clona.... no se que hacer para que sea un bucle infinito..

y bueno como cosa adicional le añadí esto que vi en un sitio para darle reflejo a las imágenes

http://www.esedeerre.com/ejemplo/4/41/crear-reflejos-por-medio-de-actionscript-30 escribió:


function Reflejo(mc) {

//Creo un objeto Bitmap en el que esté dibujado el clip que paso como parámetro
//Le doy la vuelta indicando que scaleY = -1;
var bmd:BitmapData = new BitmapData(mc.width,mc.height);
bmd.draw(mc);
var bm:Bitmap = new Bitmap(bmd);
bm.x = 0;
bm.scaleY = -1;
bm.y = mc.height * 2;
bm.cacheAsBitmap = true;

//Creo un degradado para la mascara por medio de createGradientBox. Jugando con los valores
//de alphas y ratios se puede ajustar la longitud del reflejo.
var mascara = new Sprite;
var tiporelleno:String = GradientType.LINEAR;
var colores:Array = [0x00000000, 0x00000000];
var alphas:Array = [0.6, 0];
var ratios:Array = [0, 100];
var matr:Matrix = new Matrix();
matr.createGradientBox(mc.width, mc.height, Math.PI/2, 0, 0);
var spreadMethod:String = SpreadMethod.PAD;
mascara.graphics.beginGradientFill(tiporelleno, colores, alphas, ratios, matr, spreadMethod);
mascara.graphics.drawRect(0,0,mc.width,mc.height);
mascara.x=0
mascara.y=mc.height;
mascara.cacheAsBitmap = true;

//Aplico la máscara a la copia del clip, y añado ambos al clip
bm.mask = mascara;
mc.addChild(bm);
mc.addChild(mascara);
}

Reflejo(image1);
Reflejo(image2);
Reflejo(image3);
Reflejo(image4);
Reflejo(image5);
Reflejo(image6);
Reflejo(image7);
.... y funciona perfecto. Lo pongo porque despues de intentar hacerlo por mi mismo y no poder, vi que este script funciona perfecto para estos fines y tal vez alguien mas lo pueda necesitar :wink:

Por favor ayudenme con lo del bucle gracias :D

Por nesivapama

11 de clabLevel



 

Bogota, Colombia

chrome
Citar            
MensajeEscrito el 23 Abr 2010 01:16 pm
Tiene que ser un x negativo, cuando se va del escenario:

if (movies[0].x<=(-anchoFoto))

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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