/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
http://sandy.media-box.net/blog/distortimage-20-the-fastest-way-to-freely-distort-image-with-flash-in-actionscript.html



////////////////////////////////////////////////////////////////////////////////////////////
or (not my code, difficult to control :) -->
////////////////////////////////////////////////////////////////////////////////////////////
import flash.display.BitmapData;
import flash.filters.DisplacementMapFilter;
Stage.scaleMode = "noScale";
var W:Number = 120;
var H:Number = 120;
var org:BitmapData = new BitmapData(W, H, false);
var map:BitmapData = org.clone();
var hrs:BitmapData = org.clone();
var vrs:BitmapData = org.clone();
createEmptyMovieClip("mc0", 0).attachBitmap(org, 0);
createEmptyMovieClip("mc1", 1).attachBitmap(map, 0);
createEmptyMovieClip("mc2", 2).attachBitmap(hrs, 0);
createEmptyMovieClip("mc3", 3).attachBitmap(vrs, 0);
for (var i = 1; i < 4; ++i) {
   getInstanceAtDepth(i)._x = W * i;
}
for (var y = H - 1; y >= 0; --y) {
   var compG = (Math.round(0x100 * y * (4 / (H + y) - 2 / H)) + 0x80) << 8;
   for (var x = W - 1; x >= 0; --x) {
map.setPixel(x, y, Math.round(0x100 * (0.5 - x / W) * y / H) + 0x80 | compG);
       if (x == W >> 2 || x == y * W / H >> 2) {
           org.setPixel(x, y, 0xFF0000);
       } else {
           org.setPixel(x, y, (x ^ y) & 0x08 ? 0xCCCCCC : 0xFFFFFF);
       }
   }
}
var persh:DisplacementMapFilter = new DisplacementMapFilter(map, null, 4, 2, 0, 0, "ignore");
var persv:DisplacementMapFilter = persh.clone();
persh.scaleX = W / 2;
persv.scaleY = H / 2;
hrs.applyFilter(org, org.rectangle, null, persh);
vrs.applyFilter(hrs, hrs.rectangle, null, persv);


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Regards,
Stijn AKA latcho

Henry Cooke wrote:
'lo all

Apologies if this is an old topic, but I can't find anything in the
Flashcoders archives, and Google just throws up some gnomic "it's possible"
blog comments without any actual hints on *how* it's possible...

I'm attempting to perspective distort a bitmap to use as a floor in a
parallax scene - I achieved a similar effect in oldskool Flash 6 (lots of
progressively xscaled, 1px high masked MCs, yuck) at http://www.pd3.co.uk,
but I'm sure such a thing should be possible in Flash 8 using a
DisplacementMap filter.

Does anyone have a good idea how this could be achieved? I've been spending
a very long time staring at Photoshop, trying to come up with the right
combination of gradients for the displacement map, but all I have to show is
a headache and a nagging sense that I'm missing something...

Of course, a more direct approach would be to slice & scale the source image using a whole bunch of draw()s and a Matrix with a changing xscale, but it
feels like a Displacement would be a cleaner option?

Happy Friday!
Henry
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to