2

MXML でクラスを拡張するのに問題があります。ここで説明しようと思いますが、サンプル Flash Builder プロジェクトもアップロードしました。


2 つのクラスがあるとします。

  • game.implementation.base.view.MainView
  • game.implementation.ipad.view.MainView

パッケージ名が若干異なることに注意してください (1 つは iPad 用です)。

ipadパッケージのクラスがパッケージのクラスを拡張するという考え方ですbase


上記のようにすると、エラーが発生します。

MainView へのあいまいな参照。[生成されたコード (-keep を使用して保存): パス: D:\FlexTests\Tests\bin-debug\generated\game\implementation\ipad\view\MainView-generated.as、行: 95、列: 62]

生成されたコードを確認しました。問題のある機能は次のとおりです。

_watcherSetupUtil.setup(this,
    function(propertyName:String):* { return target[propertyName]; },
    function(propertyName:String):* { return /** HERE **/ MainView[propertyName]; },
    bindings,
    watchers);

問題を絞り込みましたが、次のことが原因だと思います。

  • 同名の拡張クラス
  • MXML でバインディングを使用してクラスを拡張する

上記のいずれも行わずにこれを修正する方法はありますか?

クラスの名前を変更したくないのですが、バインディングを削除することは明らかにオプションではありません。

4

1 に答える 1

1

はい、コンパイラのバグです。古いバグの問題を見つけて複製しました。

FLEX-33580: CLONE - 別のパッケージのベース クラスと同じ名前の継承クラスでデータ バインディングを使用すると、参照があいまいになる

これは、次の場合にのみ発生します。

(a) 拡張クラスは基本クラスと同じ名前ですが、別のパッケージに含まれています。

(b) クラスの拡張は、データ バインディングを利用します。

回避策は、いずれかのクラスの名前を変更することです。

于 2014-06-20T01:24:46.177 に答える