Comunidad de diseño web y desarrollo en internet online

Linea de Tiempo, pausado cuando devuelvo fotoramas

Citar            
MensajeEscrito el 16 Ene 2011 09:16 pm
Hola, un pequeño problema...
A veces es mejor insertar los objetos por codigo... Sin embargo en este caso agregue un video dentro de la Linea de Tiempo... Luego, mediante as3, intento controlar su moviemiento, osea adelante o en reversa Lo que pasa es que a la hora de ejecutar el archivo, para adelante va bien, osea rapido pero en reversa, se ve pausado... Algun indicio de lo wue puede ser? tarda un poco porque es un swf de ~1mb http://www.box.net/shared/xj9xoyptzs

El codigo esta medio salido del tema, pero escrito tratando de evitar posibles fallos al
problema descrito antes...

Código ActionScript :

 
package 
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   public class earth3d extends MovieClip
   {
      public var earth:MovieClip;
      public var SW:Number;
      private var switcher:Boolean = false;
      private var timeline:int = 355;
      public function earth3d()
      {
         earth = video_mc;
         SW = earth.width;
         earth.addEventListener(Event.ENTER_FRAME,eventos);
         earth.addEventListener(MouseEvent.MOUSE_MOVE,mousepos);
      }
      private function eventos(e:Event){earth.stop();trace("EarthFotorama: "+earth.currentFrame); if(!switcher){fw();}else{rw();}}
      private function mousepos(e:MouseEvent) { trace("Mouse Pos: "+e.localX); if(e.localX <= (SW/2)){switcher=false;}else{switcher=true;} }
      private function fw():void { timeline=timeline-4; earth.gotoAndStop(timeline); if(earth.currentFrame <= 4){timeline=1025; earth.gotoAndStop(timeline);}}
      private function rw():void { timeline=timeline+4; earth.gotoAndStop(timeline); if(earth.currentFrame >= 1025){timeline=4; earth.gotoAndStop(timeline);}}
   }
} 

Igual aca tengo el archivo completo
estoy probando el cs5, pero lo salvo para versiones posteriores de cs4.. espero no de problemas

http://www.box.net/shared/pgq7zz9goo

Muchas Gracias,
Fred

Por chino2040

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2011 09:19 pm
PD: El mundo gira moviendo el Mouse a los lados!

Por chino2040

54 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2011 09:49 pm
BuenAS:

Es debido a la codificación del flv. Un flv lleva una serie de keyframes cada cierto tiempo que le sirven de referencia a la hora de codificarlos. Como los vídeos, se supone, se reproducen hacia delante, el algoritmo funciona bien en este sentido y bastante mal en sentido inverso.

Soluciones:

1. Importar el flv a la linea de tiempo y generarte un swf con dicho flv. Ahora cargaría el swf en lugar del flv y funciona perfecto hacia delante y hacia atrás. Es lo que hacen en la página de Pepe Jeans, por ejemplo.

2. Codificar el flv con un keyframe por frame. Esto hace que el flv pese bastante, pero como no necesita hacer codificación temporal (cada frame del vídeo es un keyframe) funciona perfecto hacia delante y hacia atrás.

3. Añadir al final del vídeo, el mismo en sentido inverso (aquí puedes meter keyframes como lo harías normalmente). Cuando reproduzcas hacia atrás, vas a la posición equivalente del segundo vídeo: si reproduciendo normalmente vas por el frame 20, y empiezas a reproducir en sentido inverso, saltas al frame 180 (suponiendo que la película tenga 100 frames + 100 frames invertidos). Esto hace que el vídeo se reproduzca siempre hacia delante, pero permite dar la sensación de que se puede invertir.

4. Alguno más, que no recuerdo ahora :)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 17 Ene 2011 07:11 pm
Whow! thks-> Creo que sera un Back to the Basics! Porque esto era lo que hacia antes, cuando No agregaba codigo. Asi que lo puse en fotoramas, y esta mas o menos bien, porque aumento su tamaño al doble. Ademas, este archivo tiene cerca de 700 fotoramas, lo cual quiere decir que flash comprime bastate bien las imagenes... Ahora, me venia a la cabeza un McGiver de antes, creo que era cambiar la extension del swf a flv ó viceversa... Pero no estoy seguro si viene al caso... Tambien trate con video, pero este al igual que un swf o movieClip(con el video agregado y sin fotorams clave) tiene el mismo issue que se comentaba, lento a la inversa....
Y bueno, la otro seria con papersion directamente, vd...
Este tipo de tecnicas para agregar objetos 3d simulados al flash, se ve bastante bueno, si sabe utilizar bien la animacion 3d de tal forma que no consuma muchos fotoramas...
Aca incluyo el codigo final, ademas de los archivos que utilice.. lamentable el swf es de 4mb.. pero bueno
Seguire buscado alternativas, hhehehehe
1000 Thks!
swf-> http://www.box.net/shared/fzqz870ufn
rar-> http://www.box.net/shared/7n2mudfrcl
El Codigo

Código ActionScript :

package 
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.*;
   
   public class Earth2 extends MovieClip
   {
      public var SW:Number;
      private var switcher:Boolean = false;
      private var timeline:int = 265;

      public function Earth2()
      {   
         SW = earth_mc.width;
         earth_mc.addEventListener(Event.ENTER_FRAME,eventos);
         earth_mc.addEventListener(MouseEvent.MOUSE_MOVE,mousepos);
      }
      private function eventos(e:Event){ if(!switcher){fw();}else{rw();}}
      private function mousepos(e:MouseEvent) { if(e.localX <= (SW/2)){switcher=false;}else{switcher=true;} }
      private function fw():void { timeline--; earth_mc.gotoAndStop(timeline); if(earth_mc.currentFrame < 2){timeline=780; earth_mc.gotoAndStop(timeline);}}
      private function rw():void { timeline++; earth_mc.gotoAndStop(timeline); if(earth_mc.currentFrame > 779){timeline=1; earth_mc.gotoAndStop(timeline);}}

   }
}


Saludos Cordiales

Fred

Por chino2040

54 de clabLevel



 

firefox

 

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