Можно пиксельным эффектом, например. Писалось мной давно, наверное криво, разбираться и комментировать лень =)
И не спрашивайте меня, почему они начинают прыгать, я не помню

Код AS3:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author FluFme
http://www.flufme.ru
*/
public class Main extends MovieClip
{
private var bitmapData:BitmapData = new BitmapData(w, h, false, 0xFFFFFF);
private var bitmap:Bitmap = new Bitmap(bitmapData);
private var pixelArray:Array = [];
private const w:int = 550;
private const h:int = 400;
private const actualWidth:int = 100;
private const actualHeight:int = 100;
private var image:BitmapData = new Img1(1,1);
//private var image2:BitmapData = new Img2(1,1);
private var areaRect:Rectangle = new Rectangle(0, 0, w, h);
var m:Matrix = new Matrix(1, 0, 0, 1, int(w/2-actualWidth/2), int(h/2-actualHeight/2));
private var l:int;
private var xRandomility:int = 100;
private var yRandomility:int = 50;
private var fallSpeed:Number = 0.25;
private var friction:Number = 0.9999;
private var runing:Boolean = false;
private var blurPoint:Point = new Point();
private var blurFilter:BlurFilter = new BlurFilter(2, 2, 2);
private var time:uint = 0;
public function Main() {
super();
addChild(bitmap);
//bitmapData.fillRect(new Rectangle(0, 0, 200, 200), 0x88FF88);
resetObjects();
pixelArray.sortOn("color");
for (var i:int = 0; i < l; i++) {
//trace(pixelArray[i].color);
}
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(e:MouseEvent):void
{
if (!runing) {
addEventListener(Event.ENTER_FRAME, enterFrame);
}
else {
time = 0;
removeEventListener(Event.ENTER_FRAME, enterFrame);
resetObjects();
}
runing = !runing;
}
private function resetObjects():void
{
pixelArray = getPixelArray(image);
l = pixelArray.length;
bitmapData.fillRect(areaRect, 0xFFFFFF);
var pixel:Pixel;
for (var i:int = 0; i < l; i++) {
pixel = pixelArray[i] as Pixel;
pixel.cdx = Math.floor(Math.random() * xRandomility - xRandomility / 2)/10;
pixel.cdy = -Math.round(Math.random() * yRandomility + yRandomility / 2)/10;
pixel.dx = friction;
pixel.dy = fallSpeed;
pixel.x += m.tx;
pixel.y += m.ty;
}
bitmapData.draw(image, m);
}
private function enterFrame(e:Event):void
{
var dx:Number;
var dy:Number;
var fx:Number;
var fy:Number;
var color:uint;
var i:int;
var j:int;
var dist:int;
var angle:uint;
bitmapData.fillRect(areaRect, 0xFFFFFF);
for (i=0; i < l; i ++) {
var pixel:Pixel = pixelArray[i];
//if (time < 30)
//{
pixel.cdx *= pixel.dx;
pixel.cdy += pixel.dy;
color = pixel.color;
//}
//else {
//var t:Number = Math.atan2(h/2-mouseY,w/2 - mouseX);
//pixel.cdx += Math.cos((pixel.x-mouseX)/(pixel.x-mouseX)) * pixel.dx;
//pixel.cdy += Math.sin((pixel.y-mouseY)/(pixel.y-pixel.x)) * pixel.dy;
//pixel.cdx = Math.sin(time/20)*2;
//pixel.cdy = Math.cos(time/20)*2;
//pixel.cdy = (h/2-mouseY)/100;
//}
if (pixel.x > w || pixel.x<0) pixel.cdx *= -1;
if (pixel.y > h || pixel.y<0) pixel.cdy *= -1;
pixel.x += pixel.cdx;
pixel.y += pixel.cdy;
bitmapData.setPixel32(pixel.x , pixel.y, color);
}
time++;
bitmapData.applyFilter(bitmapData, areaRect, blurPoint, blurFilter);
}
private function getPixelArray(bmpData:BitmapData):Array {
var arr:Array = [];
var li:int = bmpData.width;
var lj:int = bmpData.height;
var col:uint;
for (var i:int = 0; i < li; i++) {
for (var j:int = 0; j < li; j++) {
col = bmpData.getPixel32(i, j);
if (col) arr.push(new Pixel(i, j, col));
}
}
return arr;
}
}
}

Код AS3:
package
{
/**
* @author FluFme
*/
public class Pixel
{
public var x:int;
public var y:int;
public var cdy:Number=0;
public var cdx:Number=0;
public var dx:Number;
public var dy:Number;
public var color:uint;
public function Pixel(_x:int, _y:int, _color:uint) {
x = _x;
y = _y;
color = _color;
}
}
}