Я вот знаю пример с методом split(). Один дядька переписал его для AS2 и он стал работать намного шустрее чем родной flashовый метод. Это ещё на MX было.
Добавлено через 1 час 37 минут
может мне кто нибудь помоч натянуть вот на это текстуру
Добавлено через 1 час 38 минут

Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.filters.ColorMatrixFilter;
var focalLength = 400;
var lastMouseX = lastMouseY=kX=kY=0;
//-----------------------------------------------
function create(targed) {
this.createEmptyMovieClip(targed,2);
this[targed].param = {x:Stage.width/2, y:Stage.height/2, z:0};
this[targed].vertex = [{x:-100, y:-100, z:0}, {x:100, y:-100, z:0}, {x:100, y:100, z:0}, {x:-100, y:100, z:0}];
this[targed].onPress = function() {
MouseMove = true;
};
this[targed].onRelease = function() {
MouseMove = false;
};
this[targed].onReleaseOutside = function() {
MouseMove = false;
};
}
function render(targed) {
targed.clear();
targed.beginFill(0x0000FF,30);
for (i=0; i<targed.vertex.length; i++) {
var scale = focalLength/(focalLength-targed.vertex[i].z);
x = targed.vertex[i].x*scale;
y = targed.vertex[i].y*scale;
if (i == 0) {
targed.moveTo(x,y);
} else {
targed.lineTo(x,y);
}
}
//
targed._x = targed.param.x;
targed._y = targed.param.y;
}
rotateY = function (targed, degree) {
var sin = Math.sin(degree*Math.PI/180);
var cos = Math.cos(degree*Math.PI/180);
for (var i = 0; i<targed.vertex.length; i++) {
var x = cos*targed.vertex[i].x-sin*targed.vertex[i].z;
var z = cos*targed.vertex[i].z+sin*targed.vertex[i].x;
targed.vertex[i].z = z;
targed.vertex[i].x = x;
}
};
rotateX = function (targed, degree) {
var sin = Math.sin(degree*Math.PI/180);
var cos = Math.cos(degree*Math.PI/180);
for (var i = 0; i<targed.vertex.length; i++) {
var y = cos*targed.vertex[i].y-sin*targed.vertex[i].z;
var z = cos*targed.vertex[i].z+sin*targed.vertex[i].y;
targed.vertex[i].z = z;
targed.vertex[i].y = y;
}
};
create("rektangl1");
this.onEnterFrame = function() {
if (MouseMove) {
kX = this._xmouse-lastMouseX;
kY = this._ymouse-lastMouseY;
lastMouseX = this._xmouse;
lastMouseY = this._ymouse;
} else {
lastMouseX = this._xmouse;
lastMouseY = this._ymouse;
kX = kY=0;
}
rotateY(rektangl1,-kX/2);
rotateX(rektangl1,-kY);
render(rektangl1);
};