Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Distorsionar clips con ActionScript


En las Flash las transformaciones básicas que podemos aplicar a un clip son cambiar la posición, la rotación y la escala.


15/11/07 - Sin embargo, si queremos distorsionar un clip de película veremos que con las herramientas que nos proporciona Flash no podremos hacerlo directamente.

En este documento os vamos a facilitar una manera de distorsionar un clip de película en tiempo de ejecución con ActionScript. En realidad el clip original permanecerá inalterable, lo que haremos será crear otro clip con la distorsión aplicada y ocultar el primero. El proceso se va a basar en la clase bitmapData de ActionScript. La clase bitmapData nos permite akmacenar y manipular los píxeles que componen un clip.



COMO HACERLO.

La distorsión se va a hacer según este esquema donde cada bloque representa una columna de píxeles:


Se va a descomponer la representación gráfica del clip original en filas o columnas según sea la distorsión horizontal o vertical. Después modificaremos las dimensiones de estos segmentos y se generará la apariencia de distorsión. Vamos explicar sólo la distorsión vertical, ya que la distorsión horizontal es prácticamente igual y las diferencias en el código son mínimas como podréis comprobar más adelante.

El primer paso consiste en almacenar en un objeto bitmapData los píxeles del clip a distorsionar. Lo llamaremos bitmap_1. Después vamos a crear un clip vacío que contendrá el clip con la distorsión aplicada. Su identificador será contenedor. Para crear la distorsión vamos a descomponer la rejilla de píxeles del objeto bitmap_1 en sus columnas, de modo que nos quedará dentro del clip contenedor una serie clips de un píxel de ancho y la misma altura que el original. Para copiar estos píxeles, nos apoyamos en otros objetos bitmapData, que se corresponden con el identificador bitmap_temp que hay dentro del bucle en el código.

// importamos las clases necesarias
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
MovieClip.prototype.distorsionarV = function(distorsion:Number) {
var ancho:Number = Math.round(this._width);
var alto:Number = Math.round(this._height);
var transparent:Boolean = true;
var fillColor:Number = 0x00000000;
// objeto bitmapData donde almacenamos la info del clip a distorsionar
var bitmap_1:BitmapData = new BitmapData(ancho, alto, transparent, fillColor);
bitmap_1.draw(this);
this._visible = false;
distorsionado_mc.removeMovieClip();
// clip donde crearemos la distorsión
var contenedor:MovieClip = this._parent.createEmptyMovieClip("distorsionado_mc", this._parent.getNextHighestDepth(), {_x:this._x, _y:this._y});
contenedor._x = this._x;
contenedor._y = this._y;
for (var k:Number = 1; k<ancho; k++) {
var clip_temp:MovieClip = contenedor.createEmptyMovieClip("clip"+k, contenedor.getNextHighestDepth(), {_x:k, _y:0});
clip_temp._x = k;
var bitmap_temp:BitmapData = new BitmapData(1, alto);
bitmap_temp.copyPixels(bitmap_1,new Rectangle(k, 0, k, alto),new Point(0, 0));
clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true);
clip_temp._yscale = ((k/(alto-1))*(100-distorsion))+distorsion;
clip_temp._y = (alto-clip_temp._height)*0.5;
}

// liberamos memoria
bitmap_1.dispose();
};


Para distorsionar un clip simplemente hay que llamar a su método distorsionarV(distorsion). El valor del parámetro distorsión debe estar entre 0 y 100 sino los resultados son imprevisibles (podéis experimentar de todos modos). Un ejemplo sería:

miClip.distorsionarV(70);

El código os lo facilitamos en unos archivos .as de modo que para emplearlos tenéis dos opciones:
  • Copiar el código del .as dentro de nuestra película.
  • Usar un #include para disponer de sus funciones.
Con esta base lo interesante es probar nuevas formas de distorsión o incluso combinar varias distorsiones.
En esta imagen sea aplicado una distorsión horizontal y luego otra vertical para conseguir un efecto de perspectiva.


Descarga de los archivos .as: distorsion.zip

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada

 Autoría, licencia y acciones sobre este artículo

Informe de Tutoriales-flash.com*
La web de los tutoriales flash en castellano
URL: http://www.tutoriales-flash.com/

Atención: Copyright. Este artículo no se puede reproducir sin la autorización expresa del autor.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Manual de Flash

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Flash


 Comentarios de los visitantes
Aun no hemos recibido comentarios de este artículo.
Puedes ser el primero en enviar tu comentario.



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Manual de Flash
Categorías
+Flash

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia