2Psycho Tiger
>>Проект большой?
Нет, это я просто замерял время работы с кучей битмаопов
вот код:

Код AS3:
package
{
import flash.events.Event;
import flash.display.*;
import flash.geom.Matrix;
import flash.geom.Transform;
import flash.text.*;
import flash.utils.*;
public class Main extends Sprite
{
private var bitmap:Bitmap;
private var a:Array;
private var vx:Array;
private var vy:Array;
private var n:int, t:int;
private var text:TextField;
private var sp:Sprite;
private var steps:int = 0;
private function enter_frame(e:Event = null):void
{
if (steps >40)
{
sp.x += Math.random() * 10 - 5;
if (sp.x < 0)
sp.x = 0;
if (sp.x > 500)
sp.x = 500;
sp.y += Math.random() * 10 - 5;
if (sp.y < 0)
sp.y = 0;
if (sp.y > 300)
sp.y = 300;
}
else
{
++steps;
for (var i:int = 0; i < n; ++i)
{
a[i].x += vx[i]; a[i].y += vy[i];
if (a[i].x > 800)
a[i].x = 0;
else if (a[i].x < 0)
a[i].x = 800;
if (a[i].y > 600)
a[i].y = 0;
else if (a[i].y < 0)
a[i].y = 600;
}
}
text.text = (getTimer() - t).toString();
t = getTimer();
}
public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
var b:BitmapData = new BitmapData(700, 700, true, 0x77000000);
b.perlinNoise(b.width, b.height, 5, 567, true, false);
var bb:BitmapData = new BitmapData(100, 100, true, 0x77000000);
bb.perlinNoise(bb.width, bb.height, 5, 567, true, false)
sp = new Sprite();
var fon:Bitmap = new Bitmap(b);
addChild(fon);
addChild(sp);
sp.width = 500; sp.height = 500;
sp.blendMode = BlendMode.NORMAL;
sp.x = sp.y = 0;
sp.cacheAsBitmap = true;
n = 10;
a = new Array(n); vx = new Array(n); vy = new Array(n);
for (var i:int = 0; i < n; ++i)
{
var bitmap:Bitmap = new Bitmap(bb);
bitmap.cacheAsBitmap = true;
bitmap.blendMode = BlendMode.DIFFERENCE;
a[i] = bitmap;
a[i].x = i;
a[i].y = i;
sp.addChild(a[i]);
vx[i] = Math.random() * 10 - 5;
vy[i] = Math.random() * 10 - 5;
}
text = new TextField();
text.autoSize = TextFieldAutoSize.LEFT;
text.selectable = false;
text.x = -100; text.y = 50;
addChild(text);
addEventListener(Event.ENTER_FRAME, enter_frame);
}
}
}