私は、Action Scriptがxmlに続き、その中からDisplayObject階層を構築するファクトリを取得しました。これは、スクリプトがxmlでどの要素が遭遇するかを事前に知らないため、必要なユーザ定義のファクトリクラスを知らないことを意味します。アクションスクリプト3でユーザ定義クラスのインスタンスを動的に作成することはできますか?
は、私はこのような何かをすることが可能であることを知っている:
var rect:*, className:String = "flash.geom.Rectangle";
if (ApplicationDomain.currentDomain.hasDefinition(className)) {
rect = new(getDefinitionByName(className));
}
そして長方形インスタンスがインスタンス化されます。しかし、flash.geom.Rectangleをmy.factory.Blockのように置き換えるとすぐに機能しなくなり、条件付きでコメントアウトすると簡単になります。"変数ブロックが定義されていません"エラー。
明白な問題を回避するには、前工場を活性化する、my.factory.Block(および他のすべてのコンポーネント)のインスタンスを作成することであろうが、それはちょっと動的コンポーネント工場の全体のポイントを台無し。
もちろん私には:import my.factory。*;文がスクリプトの先頭に表示されます。
もっとスマートな解決方法はありますか?
私はMyClassと思います。最も便利で短い方法です。ところで、誰もここでそれを言及しませんでしたが、私は試してみました。クラスプロパティのセクションであっても、どこでもコンストラクタ本体から「動的に」ロードするクラスを参照できるようです。 – jayarjo
はい、良い点です。リファレンスがどこにあるかは関係ありません。 – Joony