在 Flash 中以编程方式淡出至消失点(当然)
-
05-09-2019 - |
解决方案
如果您正在编译为Flash Player 10(要求CS4或最近的Flex SDK),你可以在三维旋转的文本字段:
text.rotateX = -45;
有几个问题,这一点,如你需要使用字体嵌入和获取消失点在该领域的中心。
这样做的flash播放器<10位图也可以,如果你是受虐狂,并且不介意一些垂直折叠。这个想法是使用的BitmapData.draw()来绘制每一行的高度1限幅RECT和变换做透视除法。例如(在柔性):
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));
}
}
我没有做过的数学,所以我不知道这是物理精确,但它应该给你一个想法。
其他提示
您可以考虑文本对象转换为图像,然后这样做的形象。
- 亚当
在 Flash Player 9 及更早版本中,您实际上无法以简单的方式执行此操作。
Flash Player 10 和 Flash CS4 引入了对 3D 转换的一些基本支持,但这些支持非常简单,而且我想这种“极端”视角可能很难正确实现。不过,我没有使用过 CS4 创作工具,所以那里可能更容易。
还有完整的 3D 引擎,例如 纸视觉 和 离开3d 虽然他们有点矫枉过正。
我认为最好的可能是使用 位移贴图过滤器, ,我在网上找到任何好的例子时遇到了一些困难,而且我自己从未真正做过,但我认为 文档中的示例 应该可以让你很好地开始。
如果你愿意的话 能 也只需将所有像素绘制到位图并一一查看它们,这可能是编码中最有趣的事情,但它可能会很慢并且看起来不太好;)
不隶属于 StackOverflow