Foto Panoramica 360º usando bitmapData

Posted by admin | AS2,Avanzado,Class,Efectos | Sunday 18 February 2007 7:48 pm

A partir de un código posteado por Teseo en Cristalab, en la que generaba una imagen panorámica utilizando BitmapData escribí esta clase:

Actionscript:
  1. import flash.display.*;
  2. import flash.geom.*;
  3. import mx.utils.Delegate;
  4. //--------------------------------
  5. class pan360
  6. {
  7.     private var ruta:MovieClip;
  8.     private var clip:MovieClip;
  9.     private var imagen:String;
  10.     private var ancho:Number;
  11.     private var v:Number;
  12.     private var wa:Number;
  13.     //--------------------------------
  14.     public function pan360(qRuta:MovieClip, qClip:String, qImagen:String, qAncho:Number)
  15.     {
  16.         ruta = qRuta;
  17.         imagen = qImagen;
  18.         ancho = qAncho;
  19.         clip = ruta.createEmptyMovieClip(qClip, ruta.getNextHighestDepth());
  20.         clip.img = BitmapData.loadBitmap(imagen);
  21.         clip.tmp = new BitmapData(ancho, clip.img.height, true, 0);
  22.         clip.attachBitmap(clip.tmp, 1, "auto", true);
  23.         clip.tmp.copyPixels(clip.img, clip.tmp.rectangle, null);
  24.         clip.onRollOver = Delegate.create(this, onRollOver);
  25.         clip.onRollOut = Delegate.create(this, onRollOut);
  26.     }
  27.     //--------------------------------
  28.     private function onRollOver():Void
  29.     {
  30.         clip.onEnterFrame = Delegate.create(this, onEnterFrame);
  31.     }
  32.     private function onRollOut():Void
  33.     {
  34.         delete clip.onEnterFrame;
  35.     }
  36.     private function onEnterFrame():Void
  37.     {
  38.         wa = clip.img.width;
  39.         v = (v == undefined) ? 0 : Math.floor((v + (ruta._xmouse - clip.tmp.width / 2) / 15) % wa);
  40.         clip.tmp.copyPixels(clip.img, new Rectangle(v, 0, wa, clip.img.height), null);
  41.         clip.tmp.copyPixels(clip.img, new Rectangle(v + wa - 2 * wa * (v> 0), 0, wa, clip.img.height), null);
  42.     }
  43.     //--------------------------------
  44.     public function pos(qX:Number, qY:Number):Void
  45.     {
  46.         clip._x = qX;
  47.         clip._y = qY;
  48.     }
  49. }

Su uso:

Actionscript:
  1. import pan360;
  2. var pano:pan360 = new pan360(this, "pano1", "pano", 300);
  3. pano.pos(100, 50);

Pueden ver el post original AQUI.
Pueden ver tambien este otro ejemplo de movimiento panorámico. En este caso utilizando MovieClips y máscaras.

Post relacinonados:

  1. Foto panorámica 360º en flash
  2. Redibujar una línea con ActionScript
  3. Clase Contenedor
  4. Sistema de transiciones entre fotos
  5. Clase para transiciones de fotos

9 Comments »

  1. Comment by danielsemper — 8 February, 2012 @ 2:30 pm

    Excelente aplicación y mejora de lo que empezó teseo :)

    Al final queda todo muy simple de usar!!

    //offtopic//
    Un favor, en tu sección de Links>Clabers, podrías actualizar el URL de mi blog, de ctrl-F5.vectorice.com ahora estoy en http://www.aeromental.com

  2. Comment by admin — 8 February, 2012 @ 2:30 pm

    Done! gracias danielsemper :)

  3. Comment by Telma — 8 February, 2012 @ 2:30 pm

    estoy probando las panoramica tal y como la explicais arriba, pero me da errores de interfaz y no se qué, la verdad es que estoy en mis comienzos en cuanto a web. Por favor, alguién puede explicarmelo mas detalladamente, paso por apso, vaya...para burritas!!!
    Grazie!!!

  4. Comment by jorjo — 8 February, 2012 @ 2:30 pm

    a mi tambien me da algun que otro error

    dad mas detalles por favor

    gracias

  5. Comment by jorjo — 8 February, 2012 @ 2:30 pm

    no podeis poner el .fla para descargar porfavor?

    gracias

  6. Comment by JACASS — 8 February, 2012 @ 2:30 pm

    PORQUE NO PONEN EL .FLA

    COMPARTAN PUES

  7. Comment by zguillez — 8 February, 2012 @ 2:30 pm

    @JACASS: Estamos compartiendo el código... la idea es aprender a hacerlo no limitarse a abrir un .fla

  8. Comment by javier — 8 February, 2012 @ 2:30 pm

    Lo más lógico es publicar el punto fla, si el código esta mal hecho y tira errores.
    No para copiarlo, sino para ver en acción como funciona.
    Jactarse de poder desarrollar el código y no dar espacio a los que estamos aprendiendo es simple vanidad intelectualoide

  9. Comment by zguillez — 8 February, 2012 @ 2:30 pm

    @javier: No es lo más lógico, es lo más cómodo.
    En el post tienes el 100% del código necesario. LO ÚNICO que has de hacer es COPIAR el código y PEGAR en una película nueva, NADA MÁS...
    Quejarse porque no haya un .fla en el que hasta ese mínimo proceso lo haya hecho YO, es de autentico vago...

RSS feed for comments on this post. TrackBack URI

Leave a comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes