2009-06-17 11 views
2

OK、flexで使用するswcでフラッシュをコンパイルします。フレックスで書かれたクラスを使用します。

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

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

なぜですか?これを回避する方法はありますか?私はFlexコンポーネントキットを使用することを検討しましたが、私は単純なactionscriptプロジェクトに取り組んでおり、Flexフレームワークを使用していないため、この時点でコンポーネントキットを使用しても意味がありません。

ありがとうございます!

答えて

3

私はそれを持っていると思います。

My Button MovieClipは、Flex ActionScriptスクリプトプロジェクトの残りのActionScriptと同じsrcフォルダのクラスにリンクしていました。 (as3のクラスパスは.flaファイルが存在するassetsフォルダからsrcに1レベル上の "../"に設定されました)

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

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

奇妙なことに、私は何の警告もエラーも出なかったので、すべてうまくいっていると思いました。

物理的なButtonクラスをファイルシステムから削除して、Flashがコンパイル時にバージョンを生成し、Buttonシンボルの子を参照できるようにしました。 Flexで、Buttonを拡張し、必要なコードを追加したクラスを作成します。生成されたクラスは.swcファイルでコンパイルされているので、Flexはそれを見ることができ、問題は拡大しませんでした。

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

私は何が起こると仮定して、私は100%確信していません。それは私の直感が観察によって与えられるものなので、私は技術的に間違っているかもしれません。 誰かが訂正をしている場合は、歓迎します。

+0

ジョージ、これは解決策ですか?感謝:) – dani

+0

@dani SWCがFlashからコンパイルされ、Flexに追加されたら、そのSWCからクラスをインスタンス化できますか?もしそうなら、あなたがする必要があるのは、共起または継承を使用することです(あなたのセットアップに最も適したもの)。 –

+0

ありがとうGeorge - 私はSWCクラスをインスタンス化することができ、次に合成/継承がキーワードのようです。あなたのヒントは私にこの記事を見つけるのを助けました: http://www.flashdevelop.org/wikidocs/index.php?title=AS3:FlexAndFlashCS3Workflow – dani

2

あなたの質問を正しく読んでいるかどうかはわかりませんが、アプリの初期化後に読み込まれる画像/アセットの最初から利用可能な画像/アセットを埋め込みたいのですか?

この場合、このリンクをチェックしてください。どのようにアセットをアクションスクリプトプロジェクトに埋め込むかについて説明しています。 http://kennethsutherland.com/2009/04/21/why-flex-why-actionscript-why-flash/

希望はこれです。

+0

yup。あなたはそれを持っています。読み込みを避けるためにいくつかのアセットを埋め込みたい投稿に感謝します。それは便利ですが、そのシナリオ(プロジェクトの「コンパイル可能な」フラッシュとしてのフレックス)は、私のものとはちょっと違っています(フレックスで使用するswcのコンパイル)。今、私はswcをコンパイルしてフラッシュを作成し、swfから[Embed]タグを使うことを考えています。それでも、MovieClipを外部クラスにリンクし、swcでパッケージ化してflexで使用できると思っていました。それは私が陥るとは思っていなかった問題です。私は何が解決すべきか不思議です。 –

+0

私は、フラッシュIDEが生成したSWCの中に実際に含まれているものを押さえています(私はフラッシュCS3の人ではありません)。 Flashプロジェクト用のAS3プロジェクトを作成するとき、私たちのデザイナーの一人は、Embed(Flashの一部ではない)を使用しなかったと説明しましたが、資産をステージに配置して、最初からそこにいたことを確認しましたしかし、スクリプトを使ってそれらを埋め込むことはできませんでした。あなたのSWCにコードは含まれていますが、資産は含まれていません。 SWCを逆コンパイルしてみてください(winzipを使ってswfを開く)。次にdecomilerを使用してswfを開くhttp://www.flash-decompiler.com/ – kenneth

+0

資産がSWCにない場合は、以下の方法を使用する必要があります。それらを埋め込むためのブログ投稿。 – kenneth

関連する問題