googleで
カスタム検索
プロフィール

けろ&ひな

Author:けろ&ひな
大阪在住。
親ばか。
最近、転職したよ。でも、やってることは一緒なんだけどね。;-P

最近の記事
カテゴリー
月別アーカイブ
最近のコメント
最近のトラックバック
スポンサード リンク

スポンサーサイト--------(--)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Flex][Flash]as3で作成されたswfにas2で作成されたswfをロード2010-03-30(Tue)

現在の仕事は、Flex3(as3)で画面を作成している。

んで、他でswf作成するから、それを画面にロードしてほしいとのこと。

ん、SWFLoaderでロードすればお終いじゃん。
ってことで、ロードしてみた。

すると、何故か客が持ってきたswfは表示されない。。。

うーん。。。なんでだ。。。

Event.COMPLETEを拾って、ロードした内容を確認してみると
なぜか、サイズがheight,widthともに0になっている。

なんで??

仕方ないので、とりあえずMovieClipに変換してみた。

すると、型変換エラーが発生!

AVM1MovieはMovieClipに変換できません!

だって。。。

AVM1Movieって何よ???

adobe:外部のswfファイルのロードから引用
以前のバージョンの ActionScript を使用して外部 SWF ファイルをパブリッシュする場合には、制約事項に注意する必要があります。AVM2 (ActionScript Virtual Machine 2) で実行される ActionScript 3.0 の SWF ファイルと異なり、ActionScript 1.0 または 2.0 用としてパブリッシュされる SWF ファイルは AVM1 (ActionScript Virtual Machine 1) で実行されます。

AVM1 SWF ファイルが正常にロードされると、ロードされたオブジェクト (Loader.content プロパティ) は、AVM1Movie オブジェクトになります。AVM1Movie インスタンスは、MovieClip インスタンスと同じではありません。これは表示オブジェクトで、ムービークリップとは異なり、タイムラインに関連するメソッドまたはプロパティを含んでいません。親 AVM2 SWF ファイルは、ロードされた AVM1Movie オブジェクトのプロパティ、メソッド、またはオブジェクトにアクセスすることはできません。

AVM2 SWF ファイルによってロードされた AVM1 SWF ファイルには、次の制約があります。詳細については、『ActionScript 3.0 コンポーネントリファレンスガイド』の AVM1Movie クラスリストを参照してください。


AVM1Movieリファレンスより
AVM2 SWF ファイルによって読み込まれた AVM1 SWF ファイルには、次の制約があります。

* 読み込まれた AVM1Movie オブジェクトは、AVM1 SWF ファイルと、そのファイルによって読み込まれたすべての AVM1 SWF ファイルの疑似ルートオブジェクトとして処理されます。つまり、ActionScript 1.0 の lockroot プロパティが true に設定されている場合と同様に処理されます。 AVM1 ムービーは、すべての子の ActionScript 1.0 または 2.0 のコード実行時に、必ず最初に処理されます。読み込まれた子の _root プロパティは、読み込まれた AVM1 SWF ファイルの lockroot プロパティが設定されている場合を除き、常にこの AVM1 SWF ファイルになります。
* AVM1 コンテンツで、ファイルをレベルに読み込むことはできません。例えば、loadMovieNum("url", levelNum) を呼び出してファイルを読み込むことはできません。
* AVM2 SWF ファイルによって読み込まれた AVM1 SWF ファイルは、他の SWF ファイルを this に読み込めません。 つまり、他の SWF ファイルを自身の上に読み込むことはできません。 ただし、子 Sprite オブジェクト、MovieClip オブジェクト、またはこの SWF ファイルによって読み込まれた他の AVM1 SWF ファイルを this に読み込むことは可能です。


だそうだ。

つまり、Flex3(as3)で読み込んだFlash8(as2)で作成されたswfファイルは、機能制限がかかってしまう。
ということ?
Loadされたswfは、単体ではMovieが実行されているようだけど
内部で別のswfを読み込んでるっぽいから、その部分が動かなくなってると勝手に解釈した。

まいった。。。

仕方ないので、flex内部(swfの上)にjavascriptを経由してIframeで強引に表示することにしました。orz
関連記事

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

コメント

工事中
RSSフィード
リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。