2

わかった、

複雑に聞こえますが、そうではありません。いくつかのアセット (ボタンなど) を使用したいのですが、フレックス アクション スクリプト プロジェクトでフラッシュで作成しています。私のアセットはすべて 10K 未満なので、swf をロードする予定はありません。ロードされるまで待って、インターフェイスを作成します。swc を使用して、必要なクリップをインスタンス化するだけです。また、Button クラスにいくつかの追加のプロパティを持たせたいのですが、ここで問題が発生します。

Flash IDE のリンケージ プロパティでカスタム ボタン クラスへの参照を追加し、ボタン ムービークリップの子をトレースすると、正しいトレースが得られます。次に、生成された swc ファイルを使用して Flex の Main クラスで Button を作成し、Button MovieClip の同じ子をトレースすると、null が返されます。

何故ですか ?とにかくこれを回避する方法はありますか? Flex Component Kit の使用を検討しましたが、単純なアクション スクリプト プロジェクトに取り組んでおり、Flex フレームワークを使用していないため、現時点で Component Kit を使用する意味がありません。

ありがとう!

4

2 に答える 2

3

わかったと思います。

Button MovieClipは、Flexactionscriptプロジェクトの残りのactionscriptコードと同じsrcフォルダー内のクラスにリンクしていました。(as3クラスパスは「../」に設定されていました。.flaファイルが存在するアセットフォルダーから、1レベル上でsrcになります)

Flashをコンパイルすると、クラスが見つかり、.swcファイルを取得しました。そのため、フラッシュからシンボルをトレースしました。Flexがコンパイルされたとき、クラスはsrcディレクトリで見つかったため、同じクラスの新しいバージョンがコンパイルされましたが、それはswcファイルにすでに存在していました。flexが.asファイルを見つけたが、それがFlash IDEのシンボルにリンクされていることを知らなかったため(それができるとは思わない)、Flexはそのバージョンのクラスを作成しましたが、シンボルがリンクされていなかったためです。そのクラスに対して、私がトレースしていたButtonの子はnullでした。

Flexが同じクラスを2回コンパイルしないように、パッケージを使用し、flaリンクされたクラスを分離しておくと思います。

奇妙なことに、警告やエラーが発生しなかったので、すべて問題ないと思いました。

迅速でそれほど汚くない回避策は、ファイルシステムから物理Buttonクラスを削除することでした。これにより、Flashはコンパイル時にそのバージョンを生成し、Buttonシンボルの子を参照できるようになります。次に、Flexで、Buttonを拡張するクラスを作成し、必要なコードを追加しました。生成されたクラスは.swcファイルにコンパイルされたので、Flexはそれを認識でき、拡張に問題はありませんでした。

それでした!ボブはおじさんだ!

私は何が起こるかを仮定します、私は100%確信していません。それは私の直感が観察を通して当然と思っていることなので、技術的に間違っているかもしれません。誰かが修正を持っているなら、彼らは大歓迎です。

于 2009-06-18T09:17:33.913 に答える