actionscript 3-AS3可检查字体选择器



我正在构建一个组件,需要能够从字体列表中选择字体。我显示了字体列表,但我不确定正确的数据类型是什么,也不确定应该如何设置它。我尝试过String和font,但似乎遇到了错误。

private var _tfFormat:TextFormat;
_tfFormat = new TextFormat();

这将产生一个1067:字符串类型的隐式强制到不相关的flash。text:Font.

private var _font:Font = null;
_tfFormat.font = font.fontName;
[Inspectable(type="Font Name", name="font", defaultValue="Arial")]
public function get font():Font 
{
    return _font;
}
public function set font(value:Font):void 
{
    _font = value;
    invalidate();
}

这给了我一个未定义的1065变量。

private var _font:String = "";
var __cls:Class = getDefinitionByName(font) as Class;
var __fnFont:Font   = new __cls() as Font;              
_tfFormat.font  = __fnFont.fontName;
[Inspectable(type="Font Name", name="font", defaultValue="")]
public function get font():String 
{
    return _font;
}
public function set font(value:String):void 
{
    _font = value;
    invalidate();
}

我觉得我离得很近,我忽略了这件容易得离谱的事情。任何一双眼睛都将不胜感激。谢谢

好的,我解决了这个问题。

我将字体的数据类型改回了字符串。事实证明,如果使用嵌入式字体,Flash会在名称上添加一个星号;例如:ArialBold*但这个星号不包括在字体的链接标识符中。所以在我的setter中,我删除了星号,然后像往常一样从字符串中创建一个类。这是(简称)代码。

如果有更好的方法,我仍然洗耳恭听

private var _font:String = "";
private var _tfFormat:TextFormat;
_tfFormat = new TextFormat();
var __cls:Class = getDefinitionByName(font) as Class;
var __fnFont:Font = new __cls() as Font;
_tfFormat.font = __fnFont.fontName;
[Inspectable(type="Font Name", name="font", defaultValue="")]
public function get font():String 
{
    return _font;
}
public function set font(value:String):void 
{
    _font = value.split("*").join('');
    invalidate();
}

最新更新