2012-02-15 7 views
1

私はペイントアプリケーションを作成しました。ユーザーが図面を保存したいときは、単に保存ボタンを押してダイアログを表示するか、AS3 FileReference.save()は、ローカルではあるがブラウザではテストされません。

devマシンでローカルでテストする場合は問題ありませんが、ブラウザにアプリケーションが読み込まれると正常に動作しません。ローカルSWFファイルをブラウザにロードしても、動作しません。

次のコードは、ファイルを保存するために使用するもので、ローカルでは問題なく動作しますが、ブラウザに入るたびに保存されるダイアログは表示されません。

提案がありますか?

var bitmapData:BitmapData = new BitmapData(canvas.width, canvas.height); 
bitmapData.draw(canvas); 
var jpg:JPEGEncoder = new JPEGEncoder(100); 
var ba:ByteArray = jpg.encode(bitmapData); 

file = new FileReference(); 
file.addEventListener(Event.COMPLETE, fileSaveComplete); 
file.addEventListener(IOErrorEvent.IO_ERROR, error); 
file.save(ba, 'FileName.jpg'); 

FlashPlayer 11を実行して10.2 BTWにコンパイルする。

答えて

5

セキュリティ上の問題です。ファイルの保存ダイアログウィンドウは、クリックのようなダイレクトユーザーイベントの結果としてのみ開くことができるようになりました。 1つの解決方法は、イメージが作成されたときにユーザーに通知し、ファイルをローカルに保存するかどうかを尋ねることです。そして、イエスがクリックされた場合、の方法で保存します。

http://www.bogdanmanate.com/2010/05/12/flex-error-2176-when-using-filereference/

は、この情報がお役に立てば幸い:ここ

は、この変更についての詳細情報です。良い一日を過ごしてください。

+2

ありがとうございます。私が上に貼り付けたコードは、私が作成したカスタムイベントから呼び出されています。それが機能していない理由です。私はMouseEventから呼び出されるように変更しました。あなたにとっても良い日になるように。 – Martin

+0

素晴らしい!それは迷惑な機能かもしれませんが、実際にはいくつかの厄介なものを防止します。 –

+0

UIAなしでFileReference.save()を呼び出そうとすると、デバッグプレイヤーにスローしてエラーが発生しませんか? – joncys

関連する問題