FileReference.browse()を使用してユーザーからSWFを要求するFlash AS3アプリケーションがあります。選択したSWFがAS3の場合、私は良いです。しかし、AS2の場合は、最初にAS2ラッパーにロードする必要があります(私のアプリケーションで変更できるように)。これらのファイル(私のアプリとラッパーを含む)はすべてユーザーのマシン上にローカルに存在することを意図していますが、選択したファイルはどのディレクトリにも存在できます。ローダーのloaderInfo.actionScriptVersion変数からアップロードされたファイルのActionScriptバージョンを取得する方法が分かっており、正しく動作しています。私の問題は、ファイルをAS3アプリケーションからAS2ラッパーに渡してロードできるようにする方法です。ファイルをAS3から組み込みAS2ラッパーにロードしてロードする
私の最初の考えは、FileReferenceのload()関数からByteArrayをSharedObjectの "cookie"にダンプすることでした。この方法は、ユーザー体験の観点からは非常に悪いようでしたが、動作する可能性が最も高いようでした。しかし、私はAS2内でByteArrayをムービーとしてロードするメソッドを見つけることができませんでした(実際には、AS2はByteArrayクラスを持っていないようです)。したがって、私の問題の最初の潜在的な解決策は誰でもAS2のByteArrayからムービーをロードする方法を知っている場合です。
私がもう一度考えたのは、既にセットアップされているLocalConnectionブリッジを介して、アップロードされたファイルのパスをラッパーに渡してからロードするだけでした。しかし、私はファイルのパスを取得する方法を見つけることができません、私のグーグルは、セキュリティモデルが意図的にそれを防ぐことを示唆しています。言うまでもなく、ユーザーのマシンから任意のファイルを読み込むことができるかどうかはわかりません。
「私は手を上げて、私はあきらめます」という解決策は、AS3とAS2ファイルをロードするための別個のボタンを作成することであった(ユーザーにそれを推測させる) AS2ラッパーしかし、AS2にはファイル
をブラウジング
アップロードAPIがなく、私が見つけたPHPハイブリッドソリューションはオプションではありません(これはローカルで実行されるためです)。
だから、誰かがこれらの3つのロードブロッキングのいずれかを解決するために正しい方向に向けることができれば、私は永遠に感謝しています。代わりの回避策はもちろん歓迎です。
(編集) [OK]を、私はFileReferenceクラスのAS2のバージョンのドキュメントを見つけました。これは同じファイルブラウズ機能をサポートしますが、選択したファイルをSWFに直接ロードすることはサポートしていません。
しかし、セキュリティサンドボックスは、私が期待したようにローカルファイルに対して厳密ではないように見えます。パスを取得すると、ユーザーのマシン上にSWFをロードできます。
私は、ファイルパスを取得してアプリケーションに渡すためにJavaScriptとHTMLフォームをファイル入力で使用できるはずです。 Webブラウザ内でこれをすべて行う必要はありませんが、うまくいくはずです。それがうまくいけば答えとして提出します。
(編集2) は、HTML形式のアイデアをスクラッチ。 Flashが隠すのと同じ理由で、パスがJavaScriptから隠されているように見えます。私が考えることができる唯一のオプションは、ユーザーにファイルへのパスをコピーして貼り付けさせることです。
AS2ラッパーの目的は何ですか?あなたがAS3ローダーにロードした場合、それができないことをしますか? –
AS2とAS3のアプリケーションは、互いに直接通信することができない別々のVMで実行されています。これまでの私の研究(私は数日間これに取り組んできたので間違いがあります)に基づいています。ですから、私のAS3アプリケーションがアップロードされたAS2ファイルを変更するためには、私のコマンドをLocalConnectionブリッジでAS2ラッパーに渡してから、アクションを実行する必要があります。私はそれを作成していないので(つまり、何も聞いていないので)アップロードされたファイルにLocalConnectionを作ることはできません。 – VisibleMan
私は理解します。しかし、上記のコメントに基づいて、私はAS3とAS2のボタンが最高の(唯一の)オプションかもしれないと思う。ユーザー入力なしでファイル参照を2回読み込むことができない場合は、AIRでファイルを作成して一時ファイルにコピーを作成してから再オープンしてくださいファイルパスを知っている。 –