0 返信 最新の回答 日時: Dec 21, 2015 7:45 PM ユーザー:bkzen

    NPAPI 64ビット版 FlashPlayer で FileReference を使用した際の不具合について

    bkzen

      以下の現象が発生しました。

      これは 64ビット版 (NPAPI) FlashPlayer 20.0.0.235 の問題でしょうか?

      それとも 64ビット版 Firefox の問題でしょうか?

      また以下の現象が再現するのは私だけでしょうか?

       

      不具合内容

      FileReference の save() メソッドを呼んだ際にファイルが保存できない現象が起きる。

      または、保存ダイアログが表示されない現象が起きる。

      いずれもランタイムエラーは表示されない。

       

      再現方法

      再生環境
      Flash Player のバージョン
      20.0.0.235
      ブラウザー
      Firefox (NPAPI)
      バージョン43.0 または 43.0.1
      オペレーティングシステム
      Windows (Windows 7)

       

      現象発見時は PNG 画像の保存だったが検証のため最低限の実装で SWF を作成。

      書き出しはデバッグ、リリース、書き出しバージョン、書き出し環境(FlexSDK、 ApacheFlex、FlashPro等)で現象に変わりは無かったので省略。

      オンラインサービスの Wonderfl に投稿したものを例としておいておくことにする。 flash on 2015-12-21 - wonderfl build flash online

      var file: FileReference = new FileReference();
      var bytes: ByteArray = new ByteArray();
      while (bytes.length < 100) { bytes.writeByte(Math.random() * 0xFF); }
      var btn: Sprite = new Sprite();
      btn.graphics.beginFill(0);
      btn.graphics.drawRect(0, 0, 100, 100);
      btn.buttonMode = true;
      addChild(btn);
      btn.addEventListener(MouseEvent.CLICK, function(): void { 
           file.save(bytes, "testfile.byte");
      } );
      

      表示 HTML も最低限で object タグに param タグをネストして、属性の movie に対象の SWF のパスを書いたものを用意。

      ローカルやサーバー上など特に関係なく再現。

      wmode を window や direct 等にした場合は保存ダイアログが表示されず、デバッグプレイヤーでもエラーすら起きない。

      wmode を transparent にした場合は保存ダイアログが表示されるが、保存ボタンをクリックすると以下のようにアクセス許可がありませんと表示される。

      ff64_bug.png

      ちなみに上のアラートで「はい」をクリックした場合はフォルダが移動するが、移動先でも保存はできない為キャンセルするしかない。

      保存しようとしたフォルダ内に同名のファイルがある場合、続けて「上書き保存しますか?」とアラートが表示されるが、上書き保存しようとするとファイルIOエラーが起きる。

      Error #2044: ハンドルされていない IOErrorEvent : text=Error #2038: ファイル I/O エラー。
      

       

      再現しなかった環境

      32ビット版の Firefox43.0、FlashPlayer20.0.0.235。

      32ビット版の GoogleChrome47.0.2526.106 FlashPlayer20.0.0.228

      64ビット版の GoogleChrome47.0.2526.106 FlashPlayer20.0.0.228

      32ビット版の IE 8 FlashPlayer20.0.0.228

      64ビット版の IE 8 FlashPlayer20.0.0.228

      ※ FlashPlayer のバージョンは 2015年12月22日現在で最新

      ※ Firefox、Google Chrome のバージョンも 2015年12月22日現在で最新

       

      以上です。