以下のコードは、Fedora 15 の Flex 4 SDK で正常にコンパイルされます。マウス クリックでダイアログ ボックスが開き、[OK] をクリックすると、ファイルが保存されますが、ファイルは空です。同じ SWF ファイル (Linux マシンでコンパイルされたもの) を Windows マシンで実行すると、作成されたファイルに期待されるデータが含まれています。
次に、既知のバグを回避することを期待して、FileReference 宣言を関数からクラス レベルに分割しましたが、同じ問題が解決しません。
回避策を設定することを期待して、デバッグ Flash プレーヤーをパスに追加し、ブラウザーを使用せずに Flash からファイルを実行しました。そのため、Flex の問題が Firefox の問題になりました。これは、何が起こっているのかを本当に理解せずにプラグインをインストールするために使用した怪しげな手順が原因である可能性があります。Firefox 5.0 を実行しています。
基本的に私のワークフローは固定されていますが、おそらく上記を実行した人は FileReference.save() でプロジェクトを使用できませんか? このエッジケースについて心配する必要がありますか?
/*
WriteTheFile.as
Original code by Brian Hodge (brian@hodgedev.com)
Test to see if ActionScript/Flash can write files
*/
package{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.ByteArray;
import flash.net.FileReference;
public class WriteTheFile extends Sprite
{
private var _xml:String;
private var fr:FileReference;
public function WriteTheFile():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//Calling the save method requires user interaction and Flash Player 10
stage.addEventListener(MouseEvent.MOUSE_DOWN, _onMouseDown);
}
private function _onMouseDown(e:MouseEvent):void
{
fr = new FileReference()
fr.save("<xml><test>data</test></xml>", "filename.txt");
}
}
}
EDIT:行がありませんでした。上記で修正しました
編集:上記のコードの回答に対処しましたが、同じ問題が存在します。
編集:これは、スタンドアロン プレーヤーが呼び出されたときに同じシステムで機能します。したがって、これはブラウザ (FF 5.0) プラグインの問題です。