2

Flex Builder 3 で使用しようとしている Flash CS5 からインポートした「swc」ファイルを使用しようとすると、非常に奇妙な問題に直面しています (シンボルを「Flex コンポーネント」に変換することによって)。エラーは、インポートしている「swc」ファイルにリモートでさえ関連していないファイルで発生しています。

自動化が FB4 の一部として提供されていることはわかっていますが、FB4 に移行するオプションは実際にはありません。

Flash CS5 で flex SDK の設定を変更しようとしましたが (以下の手順を参照)、解決しませんでした。編集-->設定-->Actionscript-->「Actionscript 3.0 設定」-->「Flex SDK パス」(Flex4.0 sdk ではなく flex3.5 sdk を指す)

この問題は、おそらく Flex 3 と Flex 4 の互換性の問題であると思いますが、同じ回避策を見つけることができませんでした。どんな助けでも大歓迎です。

ありがとう、カピル

トレースは次のとおりです。

Severity and Description    Path    Resource    Location    Creation Time   Id
1044: Interface method createAutomationIDPartWithRequiredProperties in namespace mx.automation:IAutomationObject not implemented by class com.sparsha.view.ui:SchematicWindow.
1044: Interface method createAutomationIDPartWithRequiredProperties in namespace mx.automation:IAutomationObject not implemented by class 
1044: Interface method get automationEnabled in namespace mx.automation:IAutomationObject not implemented by class com.sparsha.lib.controls:CloseableTabBar.    
1044: Interface method get automationEnabled in namespace mx.automation:IAutomationObject not implemented by class 
1044: Interface method get automationEnabled in namespace mx.automation:IAutomationObject not implemented by class com.sparsha.lib.layouts:DockedAppLayout. 
4

2 に答える 2

0

OK、まず、エラー: これは、プロジェクトのコンパイルに使用している SDK にテンプレートが適合しない特定のテンプレートを使用して、インポートしているシンボルのクラスを Flash が生成した可能性があることを意味します。具体的には、生成されたクラスは、エラー メッセージに記載されているメソッドを実装していませんでした。つまり、framework.swc には、メソッド createAutomationIDPartWithRequiredProperties() を持つ mx.automation:IAutomationObject の定義がありますが (いい名前です)、Flash によって次のように読み取られるコードが生成されます。

package com.sparsha.view.ui {
import mx.automation:IAutomationObject;
public class SchematicWindow implements IAutomationObject { . . . } }

必要なメソッドを生成しない Flash については何もできないため、唯一の方法は SDK にモンキーパッチを適用することです。つまり、mx/automation/IAutomationObject.as を SDK ソースからプロジェクトのクラスパスにコピーします。競合するメソッド宣言を削除します (これにより、他のエラーが発生する場合と発生しない場合があります)。さらにエラーが発生する場合は、「誤動作」するすべてのクラスに対して同じ手順を繰り返します...

ただし、モンキーパッチを適用すると、元のバージョンに付属するフレームワーク RSL を使用できなくなります。したがって、私はこの問題を完全に回避し、Flash IDE からシンボルをエクスポートする別の方法を探します。たとえば、シンボルを Flex コンポーネントにしないことです。または、それらが Flex コンポーネントであることを強く主張する場合は、たとえば、FlexSprite をブートストラップし、ブートストラップされたクラスを「親クラス」として Flash シンボルに割り当てます。

于 2011-10-11T18:38:30.483 に答える
0

私も最近この問題を抱えていました。フラッシュで生成された swc をフレックス プロジェクトの lib フォルダーに含めると、エラーが発生します。

flex を flex 4.5.1.21328A SDK にアップグレードすることで、この問題を回避することができました。

他の人に役立つ可能性のある私のプロジェクトに関する追加の詳細: 私の swc は Flash Professional CS5.5 から生成され、私の Flex プロジェクトは Flash Builder 4.5 で使用されていました。

私の swc は、ActionScript 3.0 を使用して Flash Player 9 にパブリッシュされました。私のフレックス プロジェクトは 3.5.0.12683 SDK を使用していました。

于 2012-03-30T17:13:25.730 に答える