[img]http://yfrog.com/5jcurvadoj[/img]
El código es este:
Código ActionScript :
// importamos las clases necesarias import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; MovieClip.prototype.distorsionar = function(distorsionV:Number, distorsionH: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(); distorsionado2_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}); var contenedor2:MovieClip = this._parent.createEmptyMovieClip("distorsionado2_mc", this._parent.getNextHighestDepth(), {_x:this._x, _y:this._y}); contenedor._x = this._x; contenedor._y = this._y; contenedor2._x = this._x; contenedor2._y = this._y; //Deformación horizontal for (var k:Number = 1; k<alto; k++) { var clip_temp:MovieClip = contenedor.createEmptyMovieClip("clip"+k, contenedor.getNextHighestDepth(), {_x:0, _y:k}); clip_temp._y = k; var bitmap_temp:BitmapData = new BitmapData(ancho, 1); bitmap_temp.copyPixels(bitmap_1,new Rectangle(0, k, ancho, k),new Point(0, 0)); clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true); clip_temp._xscale = ((k/(ancho-1))*(100-distorsionH))+distorsionH; clip_temp._x = (ancho-clip_temp._width)*0.5; } bitmap_1.dispose(); contenedor._visible = false; var ancho2:Number = Math.round(contenedor._width); var alto2:Number = Math.round(contenedor._height); var bitmap_2:BitmapData = new BitmapData(ancho2, alto2, transparent, fillColor); bitmap_2.draw(contenedor); //Deformación vertical for (var l:Number = 1; l<ancho; l++) { var clip_temp:MovieClip = contenedor2.createEmptyMovieClip("clip"+l, contenedor2.getNextHighestDepth(), {_x:l, _y:0}); clip_temp._x = l; var bitmap_temp:BitmapData = new BitmapData(1, alto); bitmap_temp.copyPixels(bitmap_2,new Rectangle(l, 0, l, alto),new Point(0, 0)); clip_temp.attachBitmap(bitmap_temp,clip_temp.getNextHighestDepth(),"auto",true); clip_temp._yscale = ((l/(alto-1))*(100-distorsionV))+distorsionV; clip_temp._y = (alto-clip_temp._height)*0.5; } // liberamos memoria bitmap_2.dispose(); }; foto.miClip.loadMovie("pocoyo.jpg"); btn.onRelease = function(){ foto.distorsionar(50,50); } btn2.onRelease = function(){ foto.distorsionar(30,70); }
A ver si alguien puede echarme una mano. Gracias.