如何使用AS3将阿拉伯文本从右到左显示?
import flash.text.AntiAliasType;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.external.*
import fl.text.TLFTextField;
import flash.text.TextFormat;
import flashx.textLayout.formats.TextLayoutFormat;
import flashx.textLayout.elements.TextFlow;
var arabicTextField:TLFTextField = new TLFTextField();
arabicTextField.antiAliasType = AntiAliasType.ADVANCED;
arabicTextField.mouseEnabled = false;
arabicTextField.selectable = false;
arabicTextField.direction = flashx.textLayout.formats.Direction.RTL;
var fmt:TextFormat = new TextFormat();
fmt.color = 0xFFFFFF;
fmt.font = "arialArabic"
arabicTextField.embedFonts = false;
arabicTextField.defaultTextFormat = fmt;
arabicTextField.setTextFormat(fmt);
我知道这是一个旧帖子,但对于RTL文本仍然是最有用的代码片段。感谢Ellen。
让我在编写iOS上的Flash Builder 4.7的CC时添加一些经验:
Flash Builder没有提供TLFTextField及其支持类,这些类需要在iOS上显示阿拉伯语和其他RTL语言。
在CS6和CC之间,Adobe甚至从Flash Professional中删除了这些类。可能是因为标准的TextField类已经得到了改进。
尽管如此,在iOS上RTL和阿拉伯连字仍然无法正常工作。如果您使用TextField类的AirSimulator,则FlashBuilder将正确显示。如果在iOS上运行相同的代码,则不会。
StageText及其NativeText包装器将呈现正确,但对于静态文本存在缺点。
您可以考虑重新引入TLFTextField。以下是如何实现:
这应该使Ellen的代码在Air SDK 3.9的FlashBuilder 4.7上工作。
您可能会期望标准的TextField在未来的Air版本中正确显示阿拉伯语和其他RTL语言。
var txtFormat:TextFormat = new TextFormat();
txtFormat.align = "right";
我也尝试过FlarabySWF,虽然需要一些费用(不算多),但在我的经验中它的效果相当不错。
如果您不反对使用Flex框架,它现在包含了一个不错的国际化库,应该可以让您轻松地完成这个任务。这里是一个不错的起点http://devgirl.org/2011/03/15/flex-4-localization/