Cristalab

Foto panorámica 360º en flash

Por: Zguillez + 30.08.2006

Esta es una clase que te permite generar una panorámica interactiva de una fotografía en Flash.

Sólo necesitas la fotografía continua de la panorámica y usar este codigo en cualquier pelicula para añadir una visión de 360º controlada por el usuario. Espero que les resulte útil...

He aqui un ejemplo:

[Da click sostenido y arrastra en la imágen]

Coloca este codigo en un nuevo archivo de texto llamado "PanoVR.as" y pon ese archivo en la misma carpeta de tu .FLA

Código :

class PanoVR {
//Esta clase debe ir en un archivo independiente "PanoVR.as". Debes respetar las mayusculas y minusculas del nombre.
   var ruta:MovieClip;
   var clip1:MovieClip;
   var clip2:MovieClip;
   var marco:MovieClip;
   var mascara:MovieClip;
   var mascara2:MovieClip;
   var prof:Number;
   var x:Number;
   var y:Number;
   var aceleracion:Number;
   //
   //--CONSTRUCTOR------------------------------------
   function PanoVR(queRuta:MovieClip, queClip1:String, queClip2:String, queX:Number, queY:Number, queW:Number, queH:Number, queAceleracion) {
      ruta = queRuta;
      prof = ruta.getNextHighestDepth();
      clip1 = ruta.clip1 = ruta.attachMovie(queClip1, queClip1, prof);
      clip2 = ruta.clip2 = ruta.attachMovie(queClip2, queClip2, prof + 1);
      //inis
      iniPosicion(queX, queY);
      iniMascara(queX, queY, queH, queW);
      iniMarco(queX, queY, queH, queW);
      iniEvents(queAceleracion);
   }
   //--INIS----------------------------------------
   function iniPosicion(queX, queY) {
      x = clip1.x = clip2.x = queX;
      y = clip1.y = clip2.y = queY;
      clip1._x = x;
      clip1._y = y;
      clip2._x = x + clip1._width;
      clip2._y = y;
   }
   //--------------------------------------------------
   function iniMascara(queX, queY, queH, queW) {
      prof = ruta.getNextHighestDepth();
      mascara = ruta.createEmptyMovieClip("mask_mc", prof);
      mascara.beginFill(0xFF0000);
      mascara.lineStyle(1, 0x000000, 100);
      mascara.moveTo(queX, queY);
      mascara.lineTo(queX + queW, queY);
      mascara.lineTo(queX + queW, queY + queH);
      mascara.lineTo(queX, queY + queH);
      mascara.lineTo(queX, queY);
      mascara.endFill();
      mascara2 = mascara.duplicateMovieClip("mask2_mc", prof + 1);
      clip1.setMask(mascara);
      clip2.setMask(mascara2);
   }
   //--------------------------------------------------
   function iniMarco(queX, queY, queH, queW) {
      prof = ruta.getNextHighestDepth();
      marco = ruta.createEmptyMovieClip("marco_mc", prof);
      marco.lineStyle(1, 0x000000, 100);
      marco.moveTo(queX, queY);
      marco.lineTo(queX + queW, queY);
      marco.lineTo(queX + queW, queY + queH);
      marco.lineTo(queX, queY + queH);
      marco.lineTo(queX, queY);
   }
   //--------------------------------------------------
   function iniEvents(queAceleracion) {
      clip1.useHandCursor = false;
      clip2.useHandCursor = false;
      aceleracion = clip1.ac = clip2.ac = queAceleracion;
      //-----
      clip1.onPress = clip2.onPress = function () {
         var pano1:MovieClip = this;
         var pano2:MovieClip = (this == this._parent.clip1) ? this._parent.clip2 : this._parent.clip1;
         this.onEnterFrame = function() {
            this.point2 = _xmouse;
            this.vel = (this.point2 - this.point1) / 15 * -1;
            pano1._x += pano1.vel;
            enlacaPanos(pano1, pano2);
         };
         this.point1 = _xmouse;
      };
      clip1.onRelease = clip1.onReleaseOutside = clip2.onRelease = clip2.onReleaseOutside = function () {
         movimientoInercia(this);
      };
      //-----
      function enlacaPanos(pano1, pano2) {
         if (pano1._x < pano1.x) {
            pano2._x = pano1._x + pano1._width;
         } else {
            pano2._x = pano1._x - pano1._width;
         }
         //vuelta
         if (pano1._x < pano1.x & pano2._x < pano2.x) {
            pano1._x = pano2._x + pano2._width;
         } else if (pano1._x > pano1.x & pano2._x > pano2.x) {
            pano1._x = pano2._x - pano2._width;
         }
      }
      function reCapturaPunto1() {
         this.point1 = _xmouse;
      }
      function movimientoInercia(quePano) {
         var pano1:MovieClip = quePano;
         var pano2:MovieClip = (pano1 == pano1._parent.clip1) ? pano1._parent.clip2 : pano1._parent.clip1;
         pano1.onEnterFrame = function() {
            var ac:Number = pano1.vel * pano1.ac;
            pano1.vel -= ac;
            pano1._x += pano1.vel;
            if (ac < 0.01 & ac > -0.01) {
               delete pano1.onEnterFrame;
            }
            enlacaPanos(pano1, pano2);
         };
      }
      //end iniEvents
   }
   //--------------------------------------------------
}

Para usarlo, en tu .FLA colocarías algo como esto. En el primer keyframe de tu animación:

Código :

var pano = new PanoVR(this, "pano1a", "pano1b", 0, 0, 450, 240, 0.15);


Descargate el .fla aqui

Etiquetas actionscript flash

Comentarios | Enviar un comentario
Brutal!
Seguro servirá A MUCHOS!
Gracias.
Por: Pedro
Vaya, se ve muy bien Sonrisa. Tiene algún tipo de crédito o la desarrollaste tú?
Por: Coyr
Esta geniallllllllllllllllllllllll somplemente geniasl, en este momento estoy buscando una utilidad ademas de que esta impresionante Riendo
Por: jomajudo
T_T ... T_T justo lo que andaba buscando... T_T gracias!!!
Por: Aoyama
Diría que te falta un poco de especificación para el usuario común en como poner la imagen y eso. Pero la clase como tal está muy buena.
Por: Freddie
Zguillez que buen dato! esta es una consulta constante en los foros.
buen aporte! y como dice freddie, si podrias especificar un poco mas sería ideal.miau
Por: Mariux
Gracias es lo que queria desde hace tiempo!!!Lengua
Por: Nataren_blog
Excelente aporte!

Thumbs up
Por: La100rra
Muy bueno el -PanoVR.as- ... te quedó genial [B]O_o
Por: bicho_O_blog
Muy bien, hace tiempo hice algo similar pero lo deje por que las fotos que yo tomaba no tenian la precisión que necesitaba para que se viera de la calidad que se muestra en este ejemplo.
Que es lo que necesito, tal vez una cámara especial? podrían sugerirme algo.
Gracias
Por: Polanco_blog
Al fin!!

Menos mal que alguien ha hecho una buena clase para panorámicas, así dejarán de preguntar por los foros como se hace una (o no Riendo).
Por: Elecash_blog
Eso es estupendo, pero, el problema es la fotografia.
Por: Sisco
Polanco, lo que necesitas es un tripode para la camara. Uno bueno con un medidor de estabilidad como los de los metros de ingeniería (Esos tubitos medidos, llenos de agua, con una burbuja en el centro).

Eso es todo.
Por: Freddie

Coyr :

Vaya, se ve muy bien Sonrisa. Tiene algún tipo de crédito o la desarrollaste tú?

La he desarrollado yo, y aun estoy en ello... estoy añadiendole funciones como diferentes tipos de movimiento, automaticos, cambios de cursores etc...

Si, es cierto que me dejé de explicar más en detalle su funcionamiento... ahí va la referencia:

1. Lo primero de todo es tener una imagen panorámica 360º



2. Cortar esta imagen la en dos partes iguales en Photoshop (lienzo al 50%...)





3. Importar estas dos imágenes a Flash y convertirlas en MovieClips. Colocando el punto de registro en la esquina superior izquierda de la imagen.



4. Vincular los MovieClips para su uso con ActionScript. Les llamaremos (por ejemplo) pano1a y pano1b



5. Crear un archivo PanoVR.as (respetar el nombre y las mayúsculas!) que contenga todo el código arriba publicado

6. Indicar a la película Flash la ruta del archivo de la Clase



7. En el fotograma en el que queramos colocar la imagen panorámca colocaremos el siguiente código:

var pano = new PanoVR(this, "pano1a", "pano1b", 0, 0, 450, 240, 0.15);

Los parámetros que le pasamos són:

var pano = new PanoVR(this, MovieClip1, MovieClip2, posX, posY, ancho, alto, aceleracion);

MocieClip1: Es el movieclip que contiene la primera mitad de la panorámica
MocieClip2: Es el movieclip que contiene la segunda mitad de la panorámica
posX: Posicion X donde colocaremos la panorámica
posY: Posicion Y donde colocaremos la panorámica
ancho: Ancho de la panorámica
alto: Alto de la panorámica
aceleracion: Este valor hace que al soltar el botón del mouse la panorámica continue con un poco de movimiento por inercia. La velocidad a la que frene depende de este valor. El rango de este valor de 1 > 0 (aunque con valores más altos de 0.5 casi no se visualiza diferencia)
Para un movimiento con mucha inercia utilizaremos un valor 0.05
Para un movimiento con poca inercia 0.3
Si no queremos ningun tipo de inercia, valor 0

En el caso de querer modificar la velocidad a la que gira la panorámica cambiar el valor 15 en la linea 73 del archivo PanoVR.as

this.vel = (this.point2 - this.point1) / 15 * -1;

(ya he dicho que aun estoy trabajando en la clase, para por ejemplo, no tener que modificar parámetros directamente desde el archivo .as)

Hay que decir que como lo que estamos moviendo son MovieClips, estos pueden contener animaciones, botones, textos etc..

En principio esto es todo en cuanto al funcionamiento de la clase.

Polanco :

Muy bien, hace tiempo hice algo similar pero lo deje por que las fotos que yo tomaba no tenian la precisión que necesitaba para que se viera de la calidad que se muestra en este ejemplo.
Que es lo que necesito, tal vez una cámara especial? podrían sugerirme algo.
Gracias

Para realizar este tipo de fotografías necesitas en rótula especial que te permita girar la cámara controlando el angulo de giro. En Manfrotto encontrarás varios modelos.



Aqui puedes ver un pequeño tutorial de su uso y de como retocar las fotos en Photoshop
Este es un modelo profesional y no es batato. Pero realmente con cualquier tripode que te permita girar la cámara con trolado los angulas te servirá.

En total se han de hacer entre 12 y 18 fotografías para realizar los 360º, dependiendo de la óptica utilizada.

Te recomiendo el uso de programas como VR Worx o Realviz Stitcher para el acoplamiento de las fotografias.

Saludos[/img]
Por: Zguillez
Esto lo pasaré totalmente como tuto. Muy bueno Thumbs up

Mandame un mail a webmaster@cristalab.com con la petición de pasarlo a tuto asi puedo ponerlo en cola de publicación Sonrisa
Por: Freddie
Pues excelente, esto ya es un aporte genial!
Por:
Definitivamente Genial, muy buen desarrollo Zguillez, gracias por aportarlo, lo mejor sería que quedara tu referencia escrita en la clase, así no te pierdes en el anonimato y si alguien necesita soporte puede amargarte el día Riendo. Nee para la ayuda pones la referencia a los foros y al tuto. Sonrisa
Por: Coyr
Simplemente genial, te felicito y gracias por ejemplo.
Por: Ereb
Zguillez, Excelente aporte tiene todo para ser un muy buen tutorial, Gracias.
Por: Jopoipo_blog
vaya!... se ve muy bien el efecto y carga mucho mas rápido que una vista en 360° de Quick Time.
Saludos
Por: zelgadiss01_blog
Yo de mayor quiero ser como vosotros :O

Gracias
Por: Bubble_blog
super tu clase en flash! se ve muy profesional
Por: juan carlos_blog
Pues no me queda mas que felicitarte, sigue asi, esperamos tus nuevas aportaciones que mencionaste, SALUDOS
Por: Nikelout_blog
la verdad es que me gusto mucho, te felicito por la clase, no me habia encontrado con algo tan especifico desde hace mucho y bueno felicidades!!!, me va aservir de mucho
Por: norma_blog
Buenisimo y muy oportuno estoy haciendo una presentacion para una empresa y solo tienen fotos, la unica manera que encontre para resolver esto fu utilizando muvee y poder dar el efecto de acercameiento y alejamiento asi como los paneos en dichas fotos. que da exelente pero pesa los cojones mucho!!.
Creo que esto que realizaste esta buenisimo y lo que tienes proyectado a futuro sera de mucha utilidad y benieficio para todos un abraza y felicidades!!!
Por: happycryo_blog
Estoy perdido Triste jajajajaja
Por: Alberto_blog
Yo tengo una duda, para estos casos, si quiero ponerle un cargador (loading) antes de que me muestre la vista panorámica, como le haría?...

ya he probado muchas formas y con scripts que normalmente funcionan con otro tipo de animaciones flash, pero no consigo que me salga un cargador en este caso.

Mi problema está en que solo he trabajado con animaciones en donde hay muchos fotogramas, pero para este caso solo hay una linea de código y un solo fotograma.

Alguien sabe como adaptar un cargador para este tipo de vistas panorámicas??
Por: Raul B._blog
hola!! es excelente lo k hiciste!!!!!!!!!!!!!!!! , ahora una pregunta de un NEW en esto, se puede hacer con flash MX 2004??????o es para el 8??
gracias!
ahh otra cosa, yo no tengo una cam panoramica, pero lo k ago es sacar varias fotos yo y pegarlas, eso tmb se puede hacer? sacando k por ahi no keda tan bien como la panoramica.........
muchas gracias saludos!
Por: el_buitre86_blog
Hola estuve ensayando la clase, me pareció muy buena, pero intenté hacerla tal como la muestras y no me funciona, hay algun paso mas aparte del que señalaste? desde ya muchas gracias
Por: carlos_blog

Raul B._blog :

Yo tengo una duda, para estos casos, si quiero ponerle un cargador (loading) antes de que me muestre la vista panorámica, como le haría?...

Fijate que las imágenes las cargo con attachmovie:
clip1 = ruta.clip1 = ruta.attachMovie(queClip1, queClip1, prof);
con lo que han de estar añadidas dentro de la librería de la pelicula.
Para ponerles un preload tendrias que cambiar esta linea, y colocar las imagenes con loadClip, y hacer el preload con MovieClipLoader.
(quizas habilite esta posibilidad en una futura actualización de la clase)

el_buitre86_blog :

hola!! es excelente lo k hiciste!!!!!!!!!!!!!!!! , ahora una pregunta de un NEW en esto, se puede hacer con flash MX 2004??????o es para el 8??

Si claro. A partir del player 7 con AS2

carlos_blog :

Hola estuve ensayando la clase, me pareció muy buena, pero intenté hacerla tal como la muestras y no me funciona, hay algun paso mas aparte del que señalaste?

Pues no se... Seguro que has realizado todos los pasos correctamente? Como la creación del archivo PanoVR.as (respetando las mayusculas) y colocandolo en la carpeta correspondiente?

Aqui coloco el archivo .fla del ejemplo que colgue.
Por: Zguillez
Hola muy bueno este tutorial solo tengo 1 pregunta.

Y como seria sin hacer el click y arrastrar, es decir solamente moviendo el mouse???

Gracias
Por: Javier_blog
just..... Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza Alabanza
Por: ROSVEL(desde la uni)
hola, excelente clase, muchas gracias
Por: Andie_blog
tengo un problema no se como indicar la ruta la verdad que es la primera vez que hago una panoramica asi
chock281@hotmail.com
Por: iva_blog
Excelente! estuve mas de un mes buscando un tutorial como este. Muchas gracias
Por: Fabian_blog
Muy bueno ejemplo; pero me podrian decir como lo hago para fotos panoramicas a 180°
Gracias.
Por: ricky_blog
Soy novato en esto de las clases, no se que quieres decir con lo de: "Como la creación del archivo PanoVR.as (respetando las mayusculas) y colocandolo en la carpeta correspondiente?". Este archivo que deve estar en la carpeta contenedora del .swf, una vez creado. Gracias
Por: byweb_blog

ricky_blog :

Muy bueno ejemplo; pero me podrian decir como lo hago para fotos panoramicas a 180°
Gracias.

solo tienes que eliminar la funcion que realiza el emplame de ls dos mitades de la pano:
enlacaPanos(pano1, pano2);
esto en el onEnterFrame()
Pero tambien tendras que colocar un poco de codigo que controla los topes del movimento _x para que la imagen no se te vaya de la pantalla...
Por: Zguillez

byweb_blog :

Soy novato en esto de las clases, no se que quieres decir con lo de: "Como la creación del archivo PanoVR.as (respetando las mayusculas) y colocandolo en la carpeta correspondiente?". Este archivo que deve estar en la carpeta contenedora del .swf, una vez creado. Gracias

Hola.
Has de crear un archivo que se llame igual que la clase "PanoVR.as" y colocar todo el codigo de la clase:

Código :

class PanoVR {
......
}

este archivo lo puedes tener en la misma carpeta de tu archivo .fla
o lo puedes colocar dentro de una carpeta donde coloques todas las clases que utilices, e indicar esta carpeta en las preferencias de flash

y asi poder utilizar esta clase en cualquier .fla
Guiño
Por: Zguillez
No hace falta decir q es muy bueno el trabajo q hiciste. Pero tengo una pregunta; yo le he cambiado los valores de tamaño "var pano = new PanoVR(this, MovieClip1, MovieClip2, posX, posY, ancho, alto, aceleracion);
" porq mi panoramica era mas grande y la keria con detalle.. hasta ahi todo bien, anda perfecto; el único problema es q al abrirlo en cualkier swf player; se abre mas angosto del tamaño q le puse; de hecho si agrando la ventana del swf player, el tamaño esta bien, se ve entera; pero no puedo hacer q se abra directamente con el tamaño nuevo q le di.. ¿Aleguna sugerencia? =D
Gracias!!!
Por: nico_blog
y.. no se te ha ocurrido hacerle un zoom y poder controlar una vertical tambien con el mouse?
Por: zaguion_blog

zaguion_blog :

y.. no se te ha ocurrido hacerle un zoom y poder controlar una vertical tambien con el mouse?

Claro... una version que tengo actualizada de la clase ya lo hace... cuando le retoque un par de cosas más la postearé (o no) miau
Por: Zguillez
hola use el código y es fabuloso pero podrías ser mas especifico en en actions en que corregir para hacerlo con vistas de 180°
Por: marcos_blog_blog
Actualicé bastante la clase... como por ejemplo darle movimiento vertical:

Código :

class PanoVR {
   //
   private var ruta:MovieClip;
   private var clip1:MovieClip;
   private var clip2:MovieClip;
   private var marco:MovieClip;
   private var mascara:MovieClip;
   private var mascara2:MovieClip;
   private var listener:Object;
   private var prof:Number;
   private var x:Number;
   private var y:Number;
   private var width:Number;
   private var height:Number;
   private var grosor:Number;
   private var color:Number;
   private var velocidad:Number;
   private var aceleracion:Number;
   private var solapa:Number;
   //
   //--CONSTRUCTOR------------------------------------
   public function PanoVR(queRuta:MovieClip, queClip1:String, queClip2:String) {
      ruta = queRuta;
      prof = ruta.getNextHighestDepth();
      clip1 = ruta.clip1 = ruta.createEmptyMovieClip("pano1", prof);
      clip2 = ruta.clip2 = ruta.createEmptyMovieClip("pano2", prof + 1);
      clip1.attachMovie(queClip1, queClip1, 1);
      clip2.attachMovie(queClip2, queClip2, 1);
      listener = new Object();
      //-- variables default -------
      x = clip1.x = clip2.x = 0;
      y = clip1.y = clip2.y = 0;
      width = clip1.width = clip2.width = 320;
      height = clip1.height = clip2.height = 240;
      grosor = 1;
      color = 0x000000;
      velocidad = 15;
      aceleracion = 0.15;
      solapa = 0;
      //-- inis --------------------
      iniPosicion();
      iniMascara();
      iniMarco();
      iniEvents();
   }
   //--INIS-----------------------------------------
   private function iniPosicion() {
      clip1._x = x;
      clip1._y = y;
      clip2._x = x + clip1._width;
      clip2._y = y;
   }
   //--------------------------------------------------
   private function iniMascara() {
      prof = ruta.getNextHighestDepth();
      mascara = ruta.createEmptyMovieClip("mask_mc", prof);
      mascara.beginFill(0xFF0000);
      mascara.lineStyle(1, 0x000000, 100);
      mascara.moveTo(x, y);
      mascara.lineTo(x + width, y);
      mascara.lineTo(x + width, y + height);
      mascara.lineTo(x, y + height);
      mascara.lineTo(x, y);
      mascara.endFill();
      mascara2 = mascara.duplicateMovieClip("mask2_mc", prof + 1);
      clip1.setMask(mascara);
      clip2.setMask(mascara2);
   }
   //--------------------------------------------------
   private function iniMarco() {
      prof = ruta.getNextHighestDepth();
      marco = ruta.createEmptyMovieClip("marco_mc", prof);
      marco.lineStyle(grosor, color, 100);
      marco.moveTo(x, y);
      marco.lineTo(x + width, y);
      marco.lineTo(x + width, y + height);
      marco.lineTo(x, y + height);
      marco.lineTo(x, y);
   }
   //--------------------------------------------------
   private function iniEvents() {
      clip1.velocidad = clip2.velocidad = velocidad;
      clip1.aceleracion = clip2.aceleracion = aceleracion;
      clip1.solapa = solapa;
      var pano1:MovieClip = clip1;
      var pano2:MovieClip = clip2;
      var mouseIsDown:Boolean = false;
      //
      listener.onMouseDown = function() {
         mouseIsDown = true;
         //controlamos que se esta dentro del area de la pano
         if (_xmouse > pano1.x & _xmouse < (pano1.x + pano1.width) & _ymouse > pano1.y & _ymouse < (pano1.y + pano1.height)) {
            pano1.onEnterFrame = function() {
               this.point2x = _xmouse;
               this.point2y = _ymouse;
               this.velx = (this.point2x - this.point1x) / this.velocidad * -1;
               this.vely = (this.point2y - this.point1y) / this.velocidad * -1 / 2;
               pano1._x += pano1.velx;
               pano1._y += pano1.vely;
               enlacaPanos(pano1, pano2);
            };
            pano1.point1x = _xmouse;
            pano1.point1y = _ymouse;
         }
      };
      listener.onMouseUp = function() {
         mouseIsDown = false;
         movimientoInercia(pano1);
      };
      listener.onMouseMove = function() {
         //controlamos que se esta dentro del area de la pano
         if (_xmouse > pano1.x & _xmouse < (pano1.x + pano1.width) & _ymouse > pano1.y & _ymouse < (pano1.y + pano1.height)) {
            if (mouseIsDown == false) {
               if (_xmouse > pano1.x & _xmouse < (pano1.x + pano1.width / 4)) {
                  //-- izquierda
                  pano1.onEnterFrame = movimientoAutoH;
                  pano1.point1x = pano1.x + pano1.width / 4;
               } else if (_xmouse > (pano1.x + pano1.width - pano1.width / 4) & _xmouse < (pano1.x + pano1.width)) {
                  //-- derecha
                  pano1.onEnterFrame = movimientoAutoH;
                  pano1.point1x = pano1.x + pano1.width - (pano1.width / 4);
               } else if (_ymouse > pano1.y & _ymouse < (pano1.y + pano1.height / 4)) {
                  //-- arriba
                  pano1.onEnterFrame = movimientoAutoV;
                  pano1.point1y = pano1.y + (pano1.height / 4);
               } else if (_ymouse > (pano1.y + pano1.height - pano1.height / 4) & _ymouse < (pano1.y + pano1.height)) {
                  //-- abajo
                  pano1.onEnterFrame = movimientoAutoV;
                  pano1.point1y = pano1.y + pano1.height - (pano1.height / 4);
               } else {
                  //estamos fuera del area roll
                  movimientoInercia(pano1);
               }
            }
         } else {
            //estamos fuera de la pano
            movimientoInercia(pano1);
         }
      };
      Mouse.addListener(listener);
      //
      function enlacaPanos(pano1, pano2) {
         if (pano1._x < pano1.x) {
            pano2._x = pano1._x + pano1._width - pano1.solapa;
         } else {
            pano2._x = pano1._x - pano1._width + pano1.solapa;
         }
         //vuelta
         if (pano1._x < pano1.x & pano2._x < pano2.x) {
            pano1._x = pano2._x + pano2._width - pano1.solapa;
         } else if (pano1._x > pano1.x & pano2._x > pano2.x) {
            pano1._x = pano2._x - pano2._width + pano1.solapa;
         }
         //controla eje Y                                           
         if (pano1._y > pano1.y) {
            pano1._y = pano1.y;
         } else if (pano1._y < pano1.y - pano1._height + pano1.height) {
            pano1._y = pano1.y - pano1._height + pano1.height;
         }
         pano2._y = pano1._y;
      }
      function movimientoInercia(quePano) {
         var pano1:MovieClip = quePano;
         var pano2:MovieClip = (pano1 == pano1._parent.clip1) ? pano1._parent.clip2 : pano1._parent.clip1;
         pano1.onEnterFrame = function() {
            var ac:Number = pano1.velx * pano1.aceleracion;
            pano1.velx -= ac;
            pano1._x += pano1.velx;
            if (ac < 0.01 & ac > -0.01) {
               delete pano1.onEnterFrame;
            }
            enlacaPanos(pano1, pano2);
         };
      }
      function movimientoAutoH() {
         this.point2x = _xmouse;
         this.velx = (this.point2x - this.point1x) / this.velocidad * -1;
         pano1._x += pano1.velx;
         enlacaPanos(pano1, pano2);
      }
      function movimientoAutoV() {
         this.point2y = _ymouse;
         this.vely = (this.point2y - this.point1y) / this.velocidad * -1 / 2;
         pano1._y += pano1.vely;
         enlacaPanos(pano1, pano2);
      }
   }
   //end iniEvents
   //--------------------------------------------------
   private function update() {
      iniPosicion();
      removeMovieClip(mascara);
      removeMovieClip(mascara2);
      iniMascara();
      removeMovieClip(marco);
      iniMarco();
      iniEvents();
   }
   //
   //--SETTERS-----------------------------------------
   public function setPosicion(queX:Number, queY:Number) {
      x = clip1.x = clip2.x = queX;
      y = clip1.y = clip2.y = queY;
      update();
   }
   //--------------------------------------------------
   public function setDimension(queW:Number, queH:Number) {
      width = clip1.width = clip2.width = queW;
      height = clip1.height = clip2.height = queH;
      update();
   }
   //--------------------------------------------------
   public function setMarco(queGrosor, queColor:Number) {
      grosor = queGrosor;
      color = queColor;
      update();
   }
   //--------------------------------------------------
   public function setVelocidad(queVelocidad:Number) {
      velocidad = clip1.velocidad = clip2.velocidad = queVelocidad;
      update();
   }
   //--------------------------------------------------
   public function setAceleracion(queAceleracion:Number) {
      aceleracion = clip1.aceleracion = clip2.aceleracion = queAceleracion;
      update();
   }
   //--------------------------------------------------
   public function setSolapa(queSolapa:Number) {
      solapa = clip1.solapa = clip2.solapa = queSolapa;
      update();
   }
   //--------------------------------------------------
   public function setPanos(queClip1:String, queClip2:String) {
      removeMovieClip(clip1.pano1);
      removeMovieClip(clip2.pano2);
      clip1.attachMovie(queClip1, queClip1, 1);
      clip2.attachMovie(queClip2, queClip2, 1);
      update();
   }
   //--------------------------------------------------
   public function clear() {
      removeMovieClip(clip1);
      removeMovieClip(clip2);
      removeMovieClip(mascara);
      removeMovieClip(mascara2);
   }
   //--------------------------------------------------
   //--------------------------------------------------
}

Por: Zguillez
Hice una modificación de la clase para panos 180 o que no requieran ser enlazadas. Le di un nombre nuevo "PlanoVR.as". En esta caso unicamente hay que indicarle un MovieClip:

Código :

class PlanoVR {
   //
   private var ruta:MovieClip;
   private var clip:MovieClip;
   private var marco:MovieClip;
   private var mascara:MovieClip;
   private var listener:Object;
   private var prof:Number;
   private var x:Number;
   private var y:Number;
   private var width:Number;
   private var height:Number;
   private var grosor:Number;
   private var color:Number;
   private var velocidad:Number;
   private var aceleracion:Number;
   //
   //--CONSTRUCTOR------------------------------------
   public function PlanoVR(queRuta:MovieClip, queClip:String) {
      ruta = queRuta;
      prof = ruta.getNextHighestDepth();
      clip = ruta.clip = ruta.createEmptyMovieClip("plano", prof);
      clip.attachMovie(queClip, queClip, 1);
      listener = new Object();
      //-- variables default -------
      x = clip.x = 0;
      y = clip.y = 0;
      width = clip.width = 320;
      height = clip.height = 240;
      grosor = 1;
      color = 0x000000;
      velocidad = 15;
      aceleracion = 0.15;
      //-- inis --------------------
      iniPosicion();
      iniMascara();
      iniMarco();
      iniEvents();
   }
   //--INIS-----------------------------------------
   private function iniPosicion() {
      clip._x = x;
      clip._y = y;
   }
   //--------------------------------------------------
   private function iniMascara() {
      prof = ruta.getNextHighestDepth();
      mascara = ruta.createEmptyMovieClip("mask_mc", prof);
      mascara.beginFill(0xFF0000);
      mascara.lineStyle(1, 0x000000, 100);
      mascara.moveTo(x, y);
      mascara.lineTo(x + width, y);
      mascara.lineTo(x + width, y + height);
      mascara.lineTo(x, y + height);
      mascara.lineTo(x, y);
      mascara.endFill();
      clip.setMask(mascara);
   }
   //--------------------------------------------------
   private function iniMarco() {
      prof = ruta.getNextHighestDepth();
      marco = ruta.createEmptyMovieClip("marco_mc", prof);
      marco.lineStyle(grosor, color, 100);
      marco.moveTo(x, y);
      marco.lineTo(x + width, y);
      marco.lineTo(x + width, y + height);
      marco.lineTo(x, y + height);
      marco.lineTo(x, y);
   }
   //--------------------------------------------------
   private function iniEvents() {
      clip.velocidad = velocidad;
      clip.aceleracion = aceleracion;
      var plano:MovieClip = clip;
      var mouseIsDown:Boolean = false;
      //
      listener.onMouseDown = function() {
         mouseIsDown = true;
         //controlamos que se esta dentro del area de la pano
         if (_xmouse > plano.x & _xmouse < (plano.x + plano.width) & _ymouse > plano.y & _ymouse < (plano.y + plano.height)) {
            plano.onEnterFrame = function() {
               this.point2x = _xmouse;
               this.point2y = _ymouse;
               this.velx = (this.point2x - this.point1x) / this.velocidad * -1;
               this.vely = (this.point2y - this.point1y) / this.velocidad * -1 / 2;
               plano._x += plano.velx;
               plano._y += plano.vely;
               controlaTopes();
            };
            plano.point1x = _xmouse;
            plano.point1y = _ymouse;
         }
      };
      listener.onMouseUp = function() {
         mouseIsDown = false;
         movimientoInercia(plano);
      };
      listener.onMouseMove = function() {
         //controlamos que se esta dentro del area de la pano
         if (_xmouse > plano.x & _xmouse < (plano.x + plano.width) & _ymouse > plano.y & _ymouse < (plano.y + plano.height)) {
            if (mouseIsDown == false) {
               if (_xmouse > plano.x & _xmouse < (plano.x + plano.width / 4)) {
                  //-- izquierda
                  plano.onEnterFrame = movimientoAutoH;
                  plano.point1x = plano.x + plano.width / 4;
               } else if (_xmouse > (plano.x + plano.width - plano.width / 4) & _xmouse < (plano.x + plano.width)) {
                  //-- derecha
                  plano.onEnterFrame = movimientoAutoH;
                  plano.point1x = plano.x + plano.width - (plano.width / 4);
               } else if (_ymouse > plano.y & _ymouse < (plano.y + plano.height / 4)) {
                  //-- arriba
                  plano.onEnterFrame = movimientoAutoV;
                  plano.point1y = plano.y + (plano.height / 4);
               } else if (_ymouse > (plano.y + plano.height - plano.height / 4) & _ymouse < (plano.y + plano.height)) {
                  //-- abajo
                  plano.onEnterFrame = movimientoAutoV;
                  plano.point1y = plano.y + plano.height - (plano.height / 4);
               } else {
                  //estamos fuera del area roll
                  movimientoInercia(plano);
               }
            }
         } else {
            //estamos fuera de la pano
            movimientoInercia(plano);
         }
      };
      Mouse.addListener(listener);
      //
      function controlaTopes() {
         if (plano._x > plano.x) {
            plano._x = plano.x;
         } else if (plano._x < (plano.x - (plano._width - plano.width))) {
            plano._x = plano.x - (plano._width - plano.width);
         }
         if (plano._y > plano.y) {
            plano._y = plano.y;
         } else if (plano._y < (plano.y - (plano._height - plano.height))) {
            plano._y = plano.y - (plano._height - plano.height);
         }
      }
      function movimientoInercia(quePano) {
         var plano:MovieClip = quePano;
         plano.onEnterFrame = function() {
            var ac:Number = plano.velx * plano.aceleracion;
            plano.velx -= ac;
            plano._x += plano.velx;
            if (ac < 0.01 & ac > -0.01) {
               delete plano.onEnterFrame;
            }
            controlaTopes();
         };
      }
      function movimientoAutoH() {
         this.point2x = _xmouse;
         this.velx = (this.point2x - this.point1x) / this.velocidad * -1;
         plano._x += plano.velx;
         controlaTopes();
      }
      function movimientoAutoV() {
         this.point2y = _ymouse;
         this.vely = (this.point2y - this.point1y) / this.velocidad * -1;
         plano._y += plano.vely;
         controlaTopes();
      }
   }
   //end iniEvents
   //--------------------------------------------------
   private function update() {
      iniPosicion();
      removeMovieClip(mascara);
      iniMascara();
      removeMovieClip(marco);
      iniMarco();
      iniEvents();
   }
   //
   //--SETTERS-----------------------------------------
   public function setPosicion(queX:Number, queY:Number) {
      x = clip.x = queX;
      y = clip.y = queY;
      update();
   }
   //--------------------------------------------------
   public function setDimension(queW:Number, queH:Number) {
      width = clip.width = queW;
      height = clip.height = queH;
      update();
   }
   //--------------------------------------------------
   public function setMarco(queGrosor, queColor:Number) {
      grosor = queGrosor;
      color = queColor;
      update();
   }
   //--------------------------------------------------
   public function setVelocidad(queVelocidad:Number) {
      velocidad = clip.velocidad = queVelocidad;
      update();
   }
   //--------------------------------------------------
   public function setAceleracion(queAceleracion:Number) {
      aceleracion = clip.aceleracion = queAceleracion;
      update();
   }
   //--------------------------------------------------
   public function setPlano(queClip:String) {
      removeMovieClip(clip.plano);
      clip.attachMovie(queClip, queClip, 1);
      update();
   }
   //--------------------------------------------------
   public function clear() {
      removeMovieClip(clip);
      removeMovieClip(mascara);
   }
   //--------------------------------------------------
   //--------------------------------------------------
}

Por: Zguillez
Hola Zhuillez!! Increible tu script!!!!!!
Te hago una pregunta..
En que programa puedo copiar y pegar tu .as?? Porque ya probé en txt para despues renombrarlo y no me respeta los "enters", me lo copia todo seguido en una sola linea.

Gracias !! y fantastico tu laburo
Por: juanM_blog

juanM_blog :

En que programa puedo copiar y pegar tu .as?? Porque ya probé en txt para despues renombrarlo y no me respeta los "enters", me lo copia todo seguido en una sola linea.

Lo haces directamente en Flash:

Archivo > Nuevo > Archivo ActionScript

Y lo guardas como PanoVR.as
Por: Zguillez
Veo q se ta ha ocurrido lo de la vertical.. pero veo tambien q te ha quedado muy chikito el cuadro de la vista del panorama.. y tambien q le cambiaste el manejo de vista sin tener q apretar el mouse.. la verdad q se hace mas dificil ahora manejarlo.. y no me gusta mucho como queda el recuadro tan chico, no pudiendolo cambiar desde el mismo flash sin tener q modificar el .as
Sigo pensando q es buenisimo, pero critico justamente porq yo no podria hacerlo.. jeje
Lo felicito hombre
Espero q haga mejores actualizaciones Guiño
Por: zaguion_blog
Asi lo hice.. pero tuve que hacer enter manualmente en cada punto y coma y cada corchete q habia!! =P
Pensaba q podia hacerlo copiando y pegando nomas.
Gracias anyway
Por: juanM_blog
Hola, excelente este tutorial, me esta salvando un ramo en la universidad Riendo. Keria hacerte una consulta, estoy tratando de poner unos botones dentro de los mc, pero solamente se ven y no funcionan, porfa si podrias ayudarme!!...de antemano muchas gracias!!.
Por: Mauricio_blog
Hola. Los botones no te deberían dar problema. En realidad lo que estas haciendo es mover la _x _y de dos MovieClips y estos Movieclips pueden tener los botones y animaciones que quieras...
He subido un archivo de ejemplo en el que tengo varios botones funcionando:

http://www.cristalab.zguillez.com/panoVR/panoVR.zip
Por: Zguillez
Te pasaste!, el script funciona de pelos, vale por tu buena onda.
saludos desde chile.
Mauricio
Por: Mauricio_blog
Codigo genial
Por: Pepe_blog
Zguillez, en uno de tus comentarios anteriores, respondías a una persona que te preguntaba como hacer un preloader modificando una línea de tu código, la verdad yo he intentado hacer un preloader siguiendo tu consejo, pero a decir verdad no he podido hacer que funcione.

Podrías por favor, poner un ejemplo en código o en archivo .fla de como hacer una precarga?

Gracias
Por: George_blog
Está excelete esta clase. Realmente me ha servido mucho (sobre todo para un proyecto final de universidad).
Que bueno que exista gente como tu que comparte sus conocimientos gratuitamente con los demás y que además se toma su tiempo para resolver las dudas y problemas que surgen.
Dado que yo aun no conozco mucho sobre actionscript, te agradezco mucho que compatas los archivos .fla y .as para tener una mejor idea de cómo y dónde incluir las instrucciones.
Nuevamente, muchas gracias Sonrisa
Por: Kneazle_blog
Zguillez oye no me sale que hice mal? Cual debe sr el tamaño del documento?
Por: Vladi
Riendo xido xido xido algo un poco especifico para el usuario mas facil pro d ay en todo esta = de xido
Por: MAURICIO_blog
he tratado de utilizar los comandos que dan, pero la verdad no me funcionan para cubrir mis necesidades.
no se si le falta algo al codigo antionscript o yo estoy fallando en algo.
Por: juan camilo sanchez_blog

Vladi :

Zguillez oye no me sale que hice mal? Cual debe sr el tamaño del documento?

El tamaño del documento no importa... cuando crees la instancia de la clase le introduces el tamaño que quieres para a pano, y listo Guiño
Por: Zguillez

juan camilo sanchez_blog :

he tratado de utilizar los comandos que dan, pero la verdad no me funcionan para cubrir mis necesidades.
no se si le falta algo al codigo antionscript o yo estoy fallando en algo.

¿puedes explicarte más? que es lo que te falla?
Por: Zguillez
WENas.
Me gusaria saber que programa se utiliza pa hacer esto?
Por: kecnes_blog

kecnes_blog :

WENas.
Me gusaria saber que programa se utiliza pa hacer esto?
Microsoft Outlook
Por: Freddie
Esta fantastico, voy a implementarlo ojala todo salga bien Riendo
Por: Juancho_blog
Muy completo el tutorial y muy bueno el código pero tengo una duda que no encuentro por ningún lado:

Aunque el efecto 360 está logrado, voy buscando "deformar la foto" a medida que para por el centro de la máscara para que quede estirada por los bordes y dar una sensación de profundidad tipo lo que hace el Ulead 360º. Lamentablemente no sé como deformar la foto (en tipo perspectiva) en flash, ni siquiera en diseño T_T.

¿Esto que estoy buscando se puede hacer en actionscript?, ya, ya sé que puedo usar el Ulead pero quiero integrarlo en la web con flash.

¿Alguna sugerencia?
Por: j_gordon_blog
Chale pero el archivos de ejemplo al parecer no lo dejaron espero si por que es mas facil aprender de esa manera
Por: Enoy Barrera Guzman _blog

Enoy Barrera Guzman _blog :

Chale pero el archivos de ejemplo al parecer no lo dejaron espero si por que es mas facil aprender de esa manera
Es más facil copiar algo. Que es distinto.

Haz el ejercicio paso a paso si lo que quieres es aprender.
Por: Freddie
freddie
el tutorial esta exelente
aunque me gustaria preguntarte 2 cosas
1 con que programa uniste las fotos
2 puedes poner para bajar el archivo PanoVR.as de mavimiento vertical es que cuando lo copio de la web mw da error
Saludos y gracias por solucionarme la vida
Por: jp_blog

jp_blog :

freddie
el tutorial esta exelente
No lo hice yo

Para preguntas tecnicas usa el foro.
Por: Freddie
una pregunta, ¿compo puedo lograr el mismo efecto, pero para una foto q no sea 360?, solo es como entre 145 y 18 grados... Riendo
Por: Merol
la misma pregunta de merol...
gracias
Por: zoad1_blog
porlo demas todo esta full.
10x
Por: zoad1_blog

Zguillez :

ricky_blog :

Muy bueno ejemplo; pero me podrian decir como lo hago para fotos panoramicas a 180°
Gracias.

solo tienes que eliminar la funcion que realiza el emplame de ls dos mitades de la pano:
enlacaPanos(pano1, pano2);
esto en el onEnterFrame()
Pero tambien tendras que colocar un poco de codigo que controla los topes del movimento _x para que la imagen no se te vaya de la pantalla...

Por: Zguillez
tengo una pequeña duda si funciona en flash mx 2004 como lconfiguro el action script es urgente
Por: bambam230582
como le hago en flash mx
el archivo PanoVR.as se hace en el bloc de notas o como?
donde configuro el action script en el flash mx
es urgente para un trabajo final porfa.
te lo agradecere mucho o alguien me puede ayudar?
Por: carlos230582
UUOOOO genial el tuto!!!! y la info de la camara, el tripode a usar...jejej todo!!! Cool Guiño
Por: Isaac
Esta excelente este ejemplo.. pero creo que un ejemplo un poco mejorado seria que atravez de un xml o algun archivo externo mandar a llamar el JPG del panoramico.. estaria mucho mejor no?

saludos
Por: infiernet
pufffffffff!!!!!

de pelos esto gracias
Por: nasty_blog
Realmente soy nuevo en esto, pero estuve leyendo sus comentarios y todo eso y meparece genial la manera en que se apoyan todos.!!!
Por: mokazin_blog
De verdad gracias por el tutorial, me ha servido bastante y estoy siguiendo el consejo del creador de realizar el codigo paso a paso para ir aprendiendo un poco mas, de verdad esta reweno el codigo te felicito, se agradece tu disposicion para compartir y apoyar al resto... Gracias
Por: Antagon_blog
Hola tengo un problema
Mira nesesito hacer lo siguiente:
en la primera esena esta la panoramica, funciona a la perfeccion, PERO
a esta le puse botones, uno en especial, con la accion que al presionarlo salte a la segunda esena y la reprodusca,
En la primera esena donde sta la panoramica, le agregue un STOP para que no me salte direcamente a la segunda esena.
El problema esta que al exportarlo, los botones no ejecutan las acciones.
como puedo solucionar esto?
Por: isasaurio_blog
como puedo representar el movimiento de una onda.
Por: pedro_blog
increible!! gracias de veras!!
martin
Por: martin_blog
ajua!..mañana, lo estudio.
~~~~~~~~~~~~~>
y les comento, que personalmente , tengo bastantes panoramas y no uso trípode...

los veo en varios programas, entre ellos este~~~~~~~~~~~~>http://www.wpanorama.com/wpanorama.php?r=1165988259

Lagos.
Por: lagos_blog
Eres un crack.
Por: barri_blog
hola me perece muy bieno este truco

pero no se como Indicar a la película Flash la ruta del archivo de la Clase

si me puedieran ayudar por ke no soy muy experto en este campo ok
gracias
Por: marco_blog

marco_blog :

hola me perece muy bieno este truco

pero no se como Indicar a la película Flash la ruta del archivo de la Clase

si me puedieran ayudar por ke no soy muy experto en este campo ok
gracias

El archivo de la clase lo puedes poner en la misma carpeta que el archivo .FLA
o dentro de la carpeta de clases que tengas indicada en las preferencias del archivo o del programa.


Por: Zguillez
me quedan algunas dudas cuando quiero convertir las imagenes a movie clips no se como hacerlo Shock
Por: lycsistem
ya habia visto esto en otras paginas esta chido pero ojala ya pudieras poner mas avances con sus ejemplos en flash ,los que he visto son en ajax ,dhtml y otras en flash pero pues ninguna otra los he visto explicado ojala pongas uno con movimiento al pasar el cursor y unas pequeñas flechas para que los usuarios se pregunten para que sera esa flecha y se pongan ahi y se mueva que tenga varias cosas como al cargar aparecer con destello o algun efecto de entrada, podria ser que tenga zoom con click izquierdo,precarga,detenerse cuando se acabe la imagen de el lado derecho,izq,tener puntos con links etc, jeje es fasil desirlo no? yo no lo podria hacer
Por: pancho_blog
estoy comenzando con el flash, voy a probarlo, esta salaje ese efecto
Por: dark seele_blog
hola, realmente queria felicitarte por el trabajo, esta excelente! Creo que nos facilitaste las cosas a muchos de los que estamos aca y quedamos impresionados. Simplemente un pedido: seria muuucho pedir que puedas dejar un archivo .FLA para estudiarlo? Muchas gracias y feliz año nuevo!
Por: nooby_blog

nooby_blog :

hola, realmente queria felicitarte por el trabajo, esta excelente! Creo que nos facilitaste las cosas a muchos de los que estamos aca y quedamos impresionados. Simplemente un pedido: seria muuucho pedir que puedas dejar un archivo .FLA para estudiarlo? Muchas gracias y feliz año nuevo!

Ya puse una direccion para bajarse el .FLA en los promeris comentarios...
http://www.cristalab.zguillez.com/panoVR/panoVR.zip
Por: Zguillez
primero agradecer el aporte que haces, lo cierto es que es bastante util y permite cierta flexibilidad.

Mi pregunta es:
¿Cómo podría acceder a sólo una propiedad de la clase para modificarla? por ejemplo la altura o la velocidad...

gracias
Por: grifo_blog
Muy bueno! muchas gracias, fue de gran ayuda y logre hacerlo sola! Zguillez segui asi! besos
Por: Mar_blog
No pues esto ... es de lujo..pero la verdad no lo pude aplicar..veran trabajo con flash mx...y asi como muestran las imagenes esto aplica con el 8.. hay manera de hacerse este gran efecto...en mx....por que la verdad que se me complico mucho ni siquiera pude generar el archivo .as
Por: KBO_blog

KBO_blog :

.. hay manera de hacerse este gran efecto...en mx....

En Mx no, en Mx2004 si.
pero actualizate al 8 Guiño
Por: Zguillez
Hola, ando buscando un tutorial para flash pero se me a echo muy complicado, de actionscript todo sobre el macromedia mx pero se hace dificil si alguien puede ayudarme a aprender flash porfavor agreguenme a diaz_rec@hotmail.com a i perdon por el posteo en esta seccion que nada que ver
Por: Ariel_blog
Te felicito este tutorial está muy bien realizado, espero nos puedas seguir instruyendo con todos tus conocimientos.
Una pregunta, por que al reproducir mi fla me aparece el siguiente mensaje de error:

**Advertencia** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 1: No se encuentra el archivo 'toplevel.as', necesario para comprobar tipos de ActionScript 2.0. Asegúrese de que el directorio '$(LocalData)/Classes' aparece en la lista de la ruta de clases globales en las preferencias de ActionScript.
var pano = new PanoVR(this, "pano1a", "pano1b", 0, 0, 450, 240, 0.15);

Total de errores de ActionScript: 1 Errores comunicados: 1
Por: Alejandro_Oro_blog
Lo he probado y me da error el action, he copiado el codigo y seguido los pasos, creo, soy nuevo, quien puede hgecharme una mano? minipunk66@hotmail.com agregarme y hecharme un cable.
Lo unico que me sale en el swf es la foto completa.
Por: Minipunk_blog
Me encanta este tutorial de Zguillez... absolutly beautiful
Por: Ivor_blog
Hola, soy un poco novata en programación Flash.
He intentado hacer la panorámica y me da un error en la ventana de salida:

**Error** CRIS:Users:CRIS:Desktop:LIDIA:SHAMROCK WEB:html:panoramica:PanoVR.as: Línea 3: Error de sintaxis.
   var ruta:MovieClip;

**Error** CRIS:Users:CRIS:Desktop:LIDIA:SHAMROCK WEB:html:panoramica:PanoVR.as: Línea 4: Error de sintaxis.
   var clip1:MovieClip;

Total de errores de ActionScript: 2 Errores comunicados: 2


¿que puede estar pasando? Yo uso Flash MX 2004 con un MAC. Gracias
Por: nokonoko_blog
Muy Muy Bueno, la verdad me encantó! es de mucha utilidad!!!
Por: Leandro_blog
Hola, quisiera saber si podrían publicar el archivo del panorama en 180° porque me estoy confundiendo con los codigos, gracias.
Por: wibu_blog
un favor realice todo correctamente supongo.... pero me sale esto a la hora de crear el swf...

**Warning** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: The file 'toplevel.as', which is required for typechecking ActionScript 2.0, could not be found. Please make sure the directory '$(LocalData)/Classes' is listed in the global classpath of the ActionScript Preferences.
var pano = new PanoVR(this, "pano1a", "pano1b", 0, 0, 1000, 600, 0.15);

Total ActionScript Errors: 1 Reported Errors: 1




,,, porque me pide: 'toplevel.as'...

gracias
Por: Peta_blog
Está muy bueno!, lo que no puedo es hacer que me funcione, es si genero un boton en algún lado., por que podrá ser... Me interesaría saber si eso es posible, por ejemplo que al pasar por determinada parte de la foto me permita hacer correr una acción mediante un boton... se entiende?

desde ya muchas gracias...
Por: Leandro_blog
Super!, Hermano, este tutorial esta de pelos!, es justo lo que andaba buscando... ahora puedo hacer una vista panoramica de la graduacion de mi novia, me has salvado la vida hermano !!!, sigue asi !!!, esta de pelos !!!
Por: Ernesto Castaneda_blog
Tengo un problema al poner botones dentro de pano1a ya que no se como hacer referencia a un clip de pelicula.Haber si alguien me puede ayudar.

Muchas gracias
Por: alexem_blog
excelent
Por: deniz_blog
Al poner botones dentro de la vista de 180º no me funcionan.Pongo un boton con un gotoAndPlay("etiqueta"); y no funciona.

muchas gracias
Por: alexem_blog
Pues intente hacer la practica de este amigo y la verdad no me salio bien, hay unas imagenes que ya no se ven y yo creo que es por eso. Aún así lo intente de otra manera y me salió. No se si se vea como la de este ejemplo pero es una forma muy sencilla de hacer esto de la vista 360 sin tanto lio y rollo de programación archivos ni nada. Respetando el trabajo del amigo esta un poco complicado para los no tan expertos.
Si a alguien le interesa el método que invente comentelo y lo posteo.
Saludos
Por: LuxMaster_blog
hola, tengo el mx 2004 y no me deja abrir tu .fla

me podriais ayudar?

gracias
Por: jorjo_blog

jorjo_blog :

hola, tengo el mx 2004 y no me deja abrir tu .fla

me podriais ayudar?

gracias

El .fla es para Flash 8 Guiño
Por: Zguillez
ya hize todos los pasos, pero en el swf me sale una cuadro rojo en toda la pantalla por que??
Por: ivangrillo_blog
ya lo logre ya quedo muchas gracias zguillez
Por: ivangrillo_blog
Buscando soluciones para panoramas 360 me encontré con este tuto que es exclente.
Pero además encontré este sito que permite bajar un trial para generar panoramas 360. Tal vez a alguien le sirva.

http://www.ptgui.com/

Saludos.
Por: webrapid
como hago para Indicar a la película Flash la ruta del archivo de la Clase? Triste
Por: la flaka
Para generar fotografías panorámicas o de 360º yo utilizo un programa llamado ArcSoft Panorama Maker, es muy bueno y lo puedes utilizar durante el tiempo que requieras (simplemente haz clic en la opción "Nunca volver a recordarme" cuando te muestre el cuadro de dialogo para registrarte).

La dirección donde lo puedes bajar es: http://www.arcsoft.com/products/panoramamakerpro/

Espero les sirva de algo Guiño .
Por: Woller
Muy intersante. Invito a LuxMaster a que publique la forma en la que lo hizo, que también puede aportar una solución para los que estemos interesados en este tema.
Por: webrapid
Me re perdi... Ya casi lo tengo!
Por: mario300
Hola, necesito hacer hipervinculos, solo valiendome de Flash, para que un boton me envie a varios archivos de Word, ò mejor a una carpeta con muchos archivos de Word.

les gradezco. xjerax@hotmail.com
Por: Jair_blog
Jair: te conviene postear en otro tópico relacionado a preguntas de Flash y no aquí. Te van a respnder más rápido Guiño
Por: webrapid
no se ve el swf che, pero de seguro debe estar buenisimo!
Por: rotlesstree

rotlesstree :

no se ve el swf che, pero de seguro debe estar buenisimo!

Fixed miau
Por: Zguillez
a todos los que no les salio este tutorial les recomiendo esta pagina...

http://www.flashperfection.com/tutorials/360-view-36552.html

es excelente y cortisimo!
Por: Margarita_blog
Excelente trabajo, lo probare mas tarde, aunque vel el ejemplo y quedo muy bien
Por: Jabin_blog
Y porque no se integra jutamente con el FLA y no con un archivo adicional como es el PanoVR.as,

Por Ejemplo vi la panoramica de esta pagina de Cristalab y no aparece el codigo PanoVR.as, lo que me hace que este codigo esta inegrado, como haria eso.
Por: Jaime_blog
hola..muuyy pero muyyy bueno el tuto..

solo quisiera saber si el maestro creador de este efecto pudiera subir el .fla d la panoramica a 180° porq la verdad me confunde un poco la programacion...

saludos
karen
Por: karem_blog
para que cuando la imagen llegue al final no salga un espacio en blanco y vuelva al comienzo cómo se hace?
Por: aprendiz_blog
Enhorabuena por el tutorial, buenísimo.

No sé si lo habéis dicho alguno de vosotros, pero sería posible cambiar el puntero del mouse: Si va hacia la izquierda pues una flechita a la izquiera, y si va a la derecha pues una flechita a la derecha.

¿es muy complicado?

Un saludo
Por: Toni_blog
Quisiera saber como hago para subir una imagen de 360 hecha en panoramastudio a una pagina que estoy haciendo en publisher, es decir, ¿se puede convertir un archivo .pap a una archivo compatible con publisher sin que pierda sus facultades de desplazamiento?
Por: Edgar_blog
muy bueno el tutorial.. esta de agrado..
solo llevo un par de meses ocupado esta herramienta te presento mi problema..

kiero hacer la imagen mas interactiva.. como por ejemplo.. el usuario presione sobre la puerta que se ve en el fondo... lo probre creando un boton... pero no me funciono..

si pueden ayudarme a hacerle seria fantastico....

saludos
Por: hector_blog
Hola,,veo q elogios no han faltado y son bien merecidos, tengo un pequeño problema,,cuando cargo un swf como el tuyo en otro swf, no funciona, sin embargo cuando lo ejecuto a el solo si.???????
Por: Jorge_blog
Que bueno, me ha venido de perlas para acabar un proyecto, Gracias amigos
Por: lineagrafica
y hacer eso mismo pero manejarlo con botones?
Por: xanpa
hacer la panoramica manejandola con botones
Por: xanpa
Desde hace varios días estuve intentando sacar con el codigo que muestran un modo interactivo donde pueda manejar botones, la verdad se me complico muchisimo y no pude hacerlo hasta que encontré un más sensillo donde toquetiando muy poco pude ponerle botones y hacerlo dinamico, les adjunto la pagina para que lo descarguen, está sin los botones pero verán que es muy sencillo agregarcelos. gracias por la data anterior y espero que les sirva la nueva Sonrisa.

http://flash.astalaweb.net/Marco.asp?dir=Imágenes/Imagen panorámica 360º
Por: CAtalina_blog
No sirvió el linck anterior un nuevo intento, busquen alli "imagen panoramica 360" hay otros ejemplos
http://flash.astalaweb.net/Imágenes/1_Imágenes.asp
si no funciona les dejo mi correo y los envio por mail. andreacatalina2@gmail.com Guiño
Por: CAta_blog
Como podría hacerse para que el cursor cambie según la posición en la que se desplaza la fotografía, algo asi como una flechita que cambie su dirección según el desplazamiento. Agradecería muchisimo cualquier ayuda
Por: nick77_blog
Hola, me salio muy bien apesar de cambiar el tamaño y que necesitaba cargarlo desde otro swf....el detalle esque cuando mencionan lo del cargador mencionas una linea que hay que cambiar pero esa linea no existe como tal weno eso creo, la busque para ver que se podia hacer y no esta intente hacer el cambio y la verdad no funciono soy muy novato en action script pero si puedo adaptarlo a mis necesidades cuando es algo mas complicado...quiciera saber si puede hablar un poco mas de lo del cargador Sorpresa
Por: Siegfried_81
hola esta muy interesante la imagen de 360 y los botones pero como hago que esta dentro de la imagen que se mueve de 360 grados me envie a otra escena intente pero no me sale ...
Por: juanjo_blog
Ojala todos los ejemplos fueran tan didacticos como el tuyo..

Sacaste aplausos MASTER
Por: poxo
estoy desarrollando una pelicula en flash
y, quiero que un boton me abra un archivo pdf, carpetas, pero no he podido encontrar la forma, ademas quiero crear un autorun sin perjudicar la ruta de los achivos que posteriormente iran contenidos en el cd... como hago!!!!!!!!!
Por: ivanjaka_blog
Excelente clase. La he puesto en práctica. Muchísimas gracias.
Por: Augusto_blog
Hola buenas tardes, he estado utilizando tu panoramica, es excelente, solo que tengo un problema, quiero añadirle algunos botones para hacerla un poco mas interactiva que al darle click me pueda llevar a otras panoramicas, etc. solo que no me han funcionado los botones, al llamarlos desde la pelicula no se activa el boton, ademas lo he tratado de hacer con Movieclips y no ha resultado, te agradeceria si me pudieras ayudar con este problema
saludos
Por: Arnaam
ya he conseguido todo pero me sale todo rojo,
que significa

"Indicar a la película Flash la ruta del archivo de la Clase"
gracias
Por: beto_blog
Hola buenos dias... me encanta tu tutorial... pero tengo el mismo problema que muchos en estos post, he intentado meterle botones pero no me los reconoce, he visto que subistes un archivo pero ya no funciona el enlace a la version que decias que funciona correctamente con botones... TristeTristeTriste (por cierto muy buen trabajo)
Por: Daniel Fan_blog
Con un programa hice una panoramica, se acoplaron perfectamente 3 fotos, las gravé como JPG y las subí a una página web. La fotografia panoramica está muy bien. Sin embargo como hago para hacer el movimiento de ésta ?
Por: villa_blog
He creado un mini programa para visualizar varias panorámicas con tu código, cada panorámica esta en una escena, y al principio un menú para elegir, el problema es que por ejemplo voy a la panorámica 1 que esta en escena 2, pongo un botón para que vaya otra vez al menú para salir, y cambia al menú, pero se ve la panorámica encima de este por lo que n ose ven las opciones. ¿Como puedo hacer para que cuando vuelva al menú me cierre la panorámica?, he visto que tu código implementa al opción clear, pero la pongo en las acciones del botón para ir atrás, pero no cierra o limpia el visor de panorámicas. Muchas Gracias.
Por: Alejandro gil Serrano_blo
Espero que esta pregunta no sea tonta, ¿porque hay que unir fotos para hacer una presentación de 360º cuando podemos tomar un video? ¿Existe algún programa que transforme un video, avi, mov, etc, etc a este tipo de presentaciones de 360º ?? gracias y saludos
Por: gato_blog
loco el efecto esta muy bueno pero no me sale no se porke te keria pedir porfavor si lo puedes explicar mas en profundidad (a prueba de tontos). Tengo dudas con los pasos 4 y 6 especificamente. he tratado de hacerlo pero cuando pruebo la pelicula el programa se pega. Si pudieras explicarlo con pequeñas fotos de como deberia ir quedando todo en el programa seria exelente. gracias de antemano master.
Por: diegogt21_blog
aaaaaaa y tampoco se cual es el pinto de registro ni como se mueve jauajauajaua ayuda porfa esta muy pulento el efecto. gracias yoda
Por: diegogt21_blog
hola exelente tutorial, sin embargo a mi me sale en una parte un cuadro rojo que cubre la mayor parte de la imagen, que puede ser?
Por: davidgm_blog
El link para descargar el archivo no me funciona, me arroja "NOT FOUND".Crees ke exista algun error con el archivo .fla ?
Por: Matias_blog
Para que los botones funcionen es cosa de indicar bien la ruta...
la imagen se carga en un clip llamado "plano" asi que debemos indicar la ruta correcta....

this.plano.nombreClipImagen180°.nombreBoton
Por: CerDoBoT_blog
Por cierto excelente trabajo el que hizo el compañero me ha ahorrado trabajo ...mil gracias
Por: CerDoBoT_blog
Zguillez Hola muchas gracias por publicar este tutorial realmente muy bueno pero tengo un problema. mis conociemientos en flash son pocos y no entiendo como Vincular los MovieClips para su uso con ActionScript e buscado en internet este concepto y no la ayo. Gracias
Por: Salvador_blog
Como se meten los botones, no me hacen nada!! gracias
Por: arroz
Hola, excelente tuto si señor
Que tendria que hacer para que la imagen este en contino movimiento sin tener que moverla con el raton? o sea que al cargar la pagina ya salga girando la imagen...

Gracias desde ya, y enhorabuena por el trabajo
Por: JoseSM
Hola a todos, esto está genial pero me preguntaba si alguien habría hecho alguna modificación para solamente tener que pasarle un movie clip con la imagen panorámica creada con Photoshop CS3.

Lo pregunto porque es mucho más corot el proceso dandole solo un movie clip con la gran imagen y solamente una.

Por favor si alguien ya lo ha hecho o lo ha pensado diganme por favor
Por: Abel_blog
esta muy bien el tutorial este lo estoy estudiando aun... ocupo hacer algo parecido... mmm bueno hay les va lo que quiero hacer
mm no se podria cargar las imagenes esas externamente con el fin de pasar de un panorama a otro ?
como una especie de recorrido virtual
Por: Genaro_blog
q buen material, felicitaciones...

oye zguillez, me gustaría que la pelicula flash girara conforme pases el puntero del mouse hacia la derecha o izquierda, de manera automatica sin presionar clic, y conforme se aleje o se acerque al centro, la vista gire menos o más rapido...

Podrias ayudarme?
Por: Karla_blog_blog
hola felicidades por este aporte muy bueno solo tengo una duda como puedo meter botones dentro del MC, abri el MC pano1a y agrege una capa inserte el boton y puse las accion como normalmente se hace con los botones pero a la hora de publicar la peli parece como que el boton no fuera mas que un simple grafico no hace nada me´podrias ayudar??? de antemano muchas gracias por este aportazo y felicidades.
Por: zabdi64
Muchas gracias por este aporte.
Por: Marc-blog
no resulta con el flash Cs3...
Por: franco-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.