2017-02-21 5 views
0

私はAirデスクトップアプリケーションとFlashプラグインを使用したブラウザの両方で展開するactionscriptプロジェクトを持っています。Flash SWF、ブラウザ内からファイルの内容を読み込むことは可能ですか?

私のデスクトップデプロイメントでは、SWFファイル自体が読み込まれ、ファイルのハッシュが作成され、自分のサーバーに送信されます。ハッシュが期待どおりのものと一致しない場合、SWFはさらに調査のためにサーバーに自分自身をアップロードします。これはすべてflash.filesystemライブラリを使用します。

ブラウザでFlashファイルとしてデプロイしても同じことができます。私は、ブラウザの展開のためにflash.filesystemにアクセスすることはできません。

ファイルシステムを使用する以外の方法でSWF自体を読み取ることはできません。

答えて

2

この記事(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Worker.html)によると、あなたの全体のSWFコンテンツは、loaderInfo.bytes経由でアクセス可能です:ByteArrayのので、何かをロードする必要はありません。楽しい。

ロードへのフォールバック:

var aRequest:URLRequest = new URLRequest; 

// Property loaderInfo.url contains the full path to the SWF. 
aRequest.url = loaderInfo.url; 

var aLoader:URLLoader = new URLLoader; 

// Set data format to binary instead of default text. 
aLoader.dataFormat = URLLoaderDataFormat.BINARY; 
aLoader.addEventListener(Event.COMPLETE, onReady); 
aLoader.load(aRequest); 

function onReady(e:Event):void 
{ 
    var anSWF:ByteArray = aLoader.data as ByteArray; 
    trace(anSWF.length); 
} 
+0

素晴らしいですが、loaderInfo.bytesには、実際に探していたswfデータ自体が含まれています。 – Mar

+0

さらに調べると、実際のswf自体とloaderInfo.bytesの内容は異なります。これは、loaderInfo.bytesに圧縮解除されたバージョンが含まれているためです。 – Mar

+0

@MartinSmith Ok、添加溶液を加えた。 Pity loaderInfo.bytesが機能しませんでした。 – Organis

0

Flexコードは、ブラウザで埋め込みオブジェクトとして使用できるSWFファイルに変換されるAIRデスクトップアプリケーションにデプロイできます。 詳しくはhereをお読みください。

1

SWFバイトを取得するには、URLStream APIを使用して、bytearray変数にバイトを受信します。

ByteArray APIを使用してbytearrayを読み取る(処理する)ことができます。

+0

おかげで、私はそのような方法は、あなたがswfファイルの場所を指定するに依存していることを考えるに修正しています。そして、あなたがファイルの場所を読んでも、あなたはブラウザに頼るでしょうか?これはデスクトップの実装とは多少異なります。なぜなら、私は実際のswfの場所を尋ねているからです。だから確かに私は正しいファイルを読んでいます。 – Mar

+0

上記のコメントを参照してください。ref loaderInfo.bytes。 – Mar

+0

このケースでは単純なソリューションがあるにもかかわらず、とにかくコンテンツ全体が必要なのでURLStreamは不要です。 URLLoader.dataFormat = URLLoaderDataFormat.BINARYで十分です。 – Organis

関連する問題