Если вы компилируете для flash player 10 (для которого требуется CS4 или последняя версия Flex SDK), вы можете просто повернуть текстовое поле в 3d:
text.rotateX = -45;
Есть еще несколько проблем с этим, например, вам нужно использовать вложение шрифта и получить точку схождения в центре поля.
Выполнение этого во флэш-плеере <10 с растровыми изображениями также возможно, если вы мазохистичны и не возражаете против некоторого вертикального наложения. Идея состоит в том, чтобы использовать BitmapData.draw () для рисования каждой линии с обтравочным прямоугольником высотой 1 и преобразованием для деления перспективы. Например (в гибком): </p>
class Main extends Sprite
{
[Embed(systemFont="Arial", fontName="embedFont", mimeType="application/x-font")]
var embedFont:Class;
public function Main()
{
var text:TextField = new TextField();
text.defaultTextFormat = new TextFormat("embedFont", 30);
text.embedFonts = true;
text.autoSize = TextFieldAutoSize.LEFT;
text.text = "Hello, world\nHow nice\nto have\nmultiple\nlines!";
var bmp:BitmapData = new BitmapData(150, 100);
for (var i:int = 0; i != bmp.height; ++i) {
var m:Matrix = new Matrix();
// x-division, change 0.8, 0.2 to change scale increase, scale at top
m.a = i*(0.8/bmp.height)+0.2;
// horizontal center
m.tx = bmp.width * (1-m.a) / 2;
// y-division, and align text to bottom
m.ty = (bmp.height-i)/m.a - bmp.height;
bmp.draw(text, m, null, null, new Rectangle(0, i, bmp.width, 1));
}
addChild(new Bitmap(bmp));
}
}
Я не занимался математикой, поэтому не знаю, физически ли это точно, но это должно дать вам представление.