Foros del Web » Creando para Internet » Flash y Actionscript »

Distorisión de clip (perspectiva)

Estas en el tema de Distorisión de clip (perspectiva) en el foro de Flash y Actionscript en Foros del Web. Trabajando en ActionScript 2 y partiendo del tutorial de "Tutoriales Flash" he conseguido distorsionar un clip para que parezca que está en perspectiva pero tengo ...
  #1 (permalink)  
Antiguo 11/06/2010, 05:06
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Distorisión de clip (perspectiva)

Trabajando en ActionScript 2 y partiendo del tutorial de "Tutoriales Flash" he conseguido distorsionar un clip para que parezca que está en perspectiva pero tengo dos pequeños problemas. El primero es que la imagen sale curvada y no sé por qué. Y el segundo es que por la parte de abajo se recortan las esquinas.



El código es este:

Código :

Código PHP:
Ver original
  1. // importamos las clases necesarias
  2. import flash.display.BitmapData;
  3. import flash.geom.Rectangle;
  4. import flash.geom.Point;
  5.  
  6. MovieClip.prototype.distorsionar = function(distorsionV:Number, distorsionH:Number) {
  7. var ancho:Number = Math.round(this._width);
  8. var alto:Number = Math.round(this._height);
  9. var transparent:Boolean = true;
  10. var fillColor:Number = 0x00000000;
  11. // objeto bitmapData donde almacenamos la info del clip a distorsionar
  12. var bitmap_1:BitmapData = new BitmapData(ancho, alto, transparent, fillColor);
  13. bitmap_1.draw(this);
  14. this._visible = false;
  15. distorsionado_mc.removeMovieClip();
  16. distorsionado2_mc.removeMovieClip();
  17. // clip donde crearemos la distorsión
  18. var contenedor:MovieClip = this._parent.createEmptyMovieClip("distorsionado_mc", this._parent.getNextHighestDepth(), {_x:this._x, _y:this._y});
  19. var contenedor2:MovieClip = this._parent.createEmptyMovieClip("distorsionado2_mc", this._parent.getNextHighestDepth(), {_x:this._x, _y:this._y});
  20. contenedor._x = this._x;
  21. contenedor._y = this._y;
  22. contenedor2._x = this._x;
  23. contenedor2._y = this._y;
  24. //Deformación horizontal
  25. for (var k:Number = 1; k<alto; k++) {
  26. var clip_temp:MovieClip = contenedor.createEmptyMovieClip("clip"+k, contenedor.getNextHighestDepth(), {_x:0, _y:k});
  27. clip_temp._y = k;
  28. var bitmap_temp:BitmapData = new BitmapData(ancho, 1);
  29. bitmap_temp.copyPixels(bitmap_1,new Rectangle(0, k, ancho, k),new Point(0, 0));
  30. clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true);
  31. clip_temp._xscale = ((k/(ancho-1))*(100-distorsionH))+distorsionH;
  32. clip_temp._x = (ancho-clip_temp._width)*0.5;
  33. }
  34.  
  35. bitmap_1.dispose();
  36. contenedor._visible = false;
  37.  
  38. var ancho2:Number = Math.round(contenedor._width);
  39. var alto2:Number = Math.round(contenedor._height);
  40. var bitmap_2:BitmapData = new BitmapData(ancho2, alto2, transparent, fillColor);
  41. bitmap_2.draw(contenedor);
  42.  
  43. //Deformación vertical
  44. for (var l:Number = 1; l<ancho; l++) {
  45. var clip_temp:MovieClip = contenedor2.createEmptyMovieClip("clip"+l, contenedor2.getNextHighestDepth(), {_x:l, _y:0});
  46. clip_temp._x = l;
  47. var bitmap_temp:BitmapData = new BitmapData(1, alto);
  48. bitmap_temp.copyPixels(bitmap_2,new Rectangle(l, 0, l, alto),new Point(0, 0));
  49. clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true);
  50. clip_temp._yscale = ((l/(alto-1))*(100-distorsionV))+distorsionV;
  51. clip_temp._y = (alto-clip_temp._height)*0.5;
  52. }
  53. // liberamos memoria
  54. bitmap_2.dispose();
  55. };
  56.  
  57. foto.miClip.loadMovie("pocoyo.jpg");
  58.  
  59. btn.onRelease = function(){
  60.     foto.distorsionar(50,50);
  61. }
  62. btn2.onRelease = function(){
  63.     foto.distorsionar(30,70);
  64. }

A ver si alguien puede echarme una mano. Gracias.
  #2 (permalink)  
Antiguo 12/06/2010, 20:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Distorisión de clip (perspectiva)

y donde esta ese tutorial??
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 14/06/2010, 02:28
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Distorisión de clip (perspectiva)

En una página que se llama Tutoriales-Flash, en la sección de tutoriales AS2.
  #4 (permalink)  
Antiguo 14/06/2010, 03:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Distorisión de clip (perspectiva)

Cita:
Iniciado por Jamlet Ver Mensaje
Trabajando en ActionScript 2 y partiendo del tutorial de "Tutoriales Flash" he conseguido distorsionar un clip para que parezca que está en perspectiva pero tengo dos pequeños problemas. El primero es que la imagen sale curvada y no sé por qué. Y el segundo es que por la parte de abajo se recortan las esquinas.
Bueno, pues el tutorial viene con ej del logo de flash, y pues la imagen sale curvada por los efectos que se le dan, y la parte de abajo que se recortan las esquinas, puede ser por ej por el tamaño del movieclip o del escenario pues el width y el height se asignan con this, igual tal vez tengas los archivos originales, así que revisa las medidas, y de paso revisa que la imagen que usas también sea de las dimensiones de las del tutorial pues tal vez este sea otro factor
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 15/06/2010, 03:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Distorisión de clip (perspectiva)

Al parecer era cosa de la fórmula. Trasteando con los número he cambiado esta linea y los valores que le paso a la fórmula...

Código PHP:
clip_temp._yscale = ((l/(alto-1))*(80-distorsionV))+distorsionV
y ha desaparecido la curva y se ven las esquinas.

Muchas gracias.

Etiquetas: clips
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.