2012-02-29 10 views
0

私の顧客の一人が多くのSWFを持っており、iPadに移植したいと考えています。しかし、彼はSWFだけを持ち、FLAsは持っていません。iOS用Airアプリケーションに既存のSWFを埋め込むことは可能ですか?

Air for iOSアプリ内でSWFを実行する方法であるかどうかを知りたいと思います。私は、Loaderを使用して読み込むことができますが、それらの内部のすべてのコードを無視してアニメーションとしてのみ実行します。

ありがとうございました。

[更新]私はSWCの使用について何か読んだことがありますが、コードを実行するかどうかまだ分かりません。

+0

は、SWFファイルにはActionScriptは、許可されていません。タイムラインアニメーションのみを含み、コードを含まないswfファイルをロードして実行することはできますが、それはかなり小さなユースケースです。 –

+0

実際にはswcファイルを使用できますが、ローダーを使用してロードすることはできません。メインアプリケーションへのライブラリとしてそれらを含めることになります。残念ながら、flaがなければ、コードでswcを生成することができない場合があります。 – scriptocalypse

+1

swfファイルをswcファイルとしてパッケージ化することはオプションになります。 swcファイルは実行時にロードされず、コンパイル時にインクルードされます。通常、swcファイルは既存のswfファイルから作成されませんが、swcファイルは拡張子が.swcで、指定された内容の実際のzipファイルに含まれているため、可能です。http://en.wikipedia.org/wiki/Adobe_SWC_file –

答えて

2

アップデートをロードすることができないSWF、2012年10月にコンパイルすることが可能であることをこれに追加したい

その完全なハンドラ内のSWFとの対話:

をAdobe AIR 3.5では、「複数のSWFサポート」という機能が導入されており、ローダーを使用して.ipa(サーバーではなくローカルファイル)で配信されたSWFを読み込み、コードを持たせることができます。 adlコンパイラAOTは、.ipaに含まれるSWFをコンパイルし、iOS上でロードして動作させることができます。この機能は-swf-バージョンを必要とすることを

注:

AIR 3.5は、Adobeラボサイト上で、この記事の執筆時点では現在ベータ版で提供されています= 18以上のルートSWF(必ずしもロードされるアセットではない)と、アプリケーションXMLファイルの3.5で終わるAIRネームスペース。

古い答え:動作しないのコードを持つ外部のSWFはAirのADTコンパイラは、あなたのルートSWF(とのみ、あなたのルートSWF)をクロスコンパイルすることである

理由により、Objective-Cのコード消耗品にiOSデバイス[埋め込み] SWFと.ipa(AIR 3.5より前)に含まれるSWFは、クロスコンパイルされません。

私が埋め込まれた資産については、この問題の回避策作成:gameLevel.swfはそれにコードを持っている場合、新たなgameLevel(ので、それは一般的に、iOS版では動作しないだろう、このシナリオで

[Embed(source="gameLevel.swf")] 
    private var gameLevel:Class; 

... 

addChild(new gameLevel()); 

を)だろうLoaderを作成し、SWFバイトコードを解釈します。しかし、上記のSWFをSWFMergeというツールで最初に実行すると、埋め込みSWFが取り出され、ルートSWFにマージされます。その結果、ADTはあなたの埋め込みコードをobjective-Cにコンパイルし、iOSで動作します。新しいgameLevel()は、あなたの資産のインスタンスになります。ローダーではありません。

SWFMergeツール

はここにある:この回避策は、あなたのために働く

http://www.onetacoshort.com/temp/SWFMerge_alpha.swf

LMK場合や、悩みを持っている場合。乾杯! AppleはiOSの中にロードされたコードを実行するためのサードパーティ製のランタイムを許可していないので、正しい

-Jeff

+0

試してみるといいよね。どうもありがとう。 –

1

はいあなたは、

Appleは、あなたのアプリケーションは、インターネットからのSWFの使用ローダーをダウンロードすることはできませんことはできますが、あなたが使用するこれを行うには、あなたの.ipa

の内側にそれらを埋め込むと、含まれるように許可されていますembedタグ

[Embed("myswf.swf", mimeType="application/octet-stream")] private var mySwf:Class; 

は、その後、使用することができます

swf = new mySwf(); 
swf.addEventListener(Event.COMPLETE, completeHandler); 

そして、私は

+0

しかし、1つの問題があります。この方法では、ライブラリシンボルのみを使用できます。 http://stackoverflow.com/questions/8915924/access-maintimeline-symbol-using-class-level-embed/8920101#8920101 – weltraumpirat

関連する問題