0

コンポーネントを作成していて、フォント リストからフォントを選択できるようにする必要があります。フォント リストが表示されていますが、適切なデータ型が何であるか、どのように設定すればよいかわかりません。String と Font を試しましたが、エラーが発生しているようです。

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

これにより、関連のない flash.text:Font への 1067: タイプ String の暗黙的な強制が生成されます。

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();
}

私はかなり近づいていると感じており、私が見落としているのはとてつもなく簡単なことです. 任意の目のセットをいただければ幸いです。ありがとう。

4

1 に答える 1

0

私は問題を解決しました。

フォントのデータ型を文字列に戻しました。結局のところ、埋め込みフォントを使用している場合、Flash は名前にアスタリスクを追加します。例: ArialBold* しかし、そのアスタリスクはフォントのリンケージ識別子には含まれていません。したがって、セッターでアスタリスクを削除し、通常どおり文字列からクラスを作成しました。これが(短縮された)コードです。

より良い方法があれば、私はまだすべての耳です. :)

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();
}
于 2013-02-04T16:56:52.853 に答える