fileReference.save; работает в SWF, но не работает, когда SWF встроен в HTML
Этот код работает должным образом при публикации в Flash CS 5.5 как.swf (он предлагает найти место для сохранения файла). Однако, когда он публикуется в HTML, он не работает (не запрашивает поиск места назначения). Это проблема безопасности или другая проблема?
import flash.display.Sprite;
import flash.media.Microphone;
import flash.system.SecurityDomain;
import org.bytearray.micrecorder.*;
import org.bytearray.micrecorder.events.RecordingEvent;
import org.bytearray.micrecorder.encoder.WaveEncoder;
import flash.events.Event;
import flash.net.FileReference;
import flash.utils.setTimeout;
var mic:Microphone;
var waveEncoder:WaveEncoder = new WaveEncoder();
var recorder:MicRecorder = new MicRecorder(waveEncoder);
var fileReference:FileReference = new FileReference();
mic = Microphone.getMicrophone();
mic.setSilenceLevel(0);
mic.gain = 100;
mic.setLoopBack(true);
mic.setUseEchoSuppression(true);
Security.showSettings("2");
addListeners();
function addListeners():void
{
setTimeout(startIntroTime,3000);
function startIntroTime():void
{
startRecording();
setTimeout(stopRecording,5000);
}
recorder.addEventListener(Event.COMPLETE, recordComplete);
}
function startRecording():void
{
if (mic != null)
{
recorder.record();
}
}
function stopRecording():void
{
recorder.stop();
mic.setLoopBack(false);
}
function recordComplete(e:Event):void
{
fileReference.save(recorder.output, "recording.wav");
}
1 ответ
Ознакомьтесь с документацией: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html
Это говорит:
В Flash Player этот метод можно успешно вызывать только в ответ на пользовательское событие (например, в обработчике события для щелчка мыши или события нажатия клавиши). В противном случае вызов этого метода приводит к тому, что Flash Player выдает исключение Error. Это ограничение не распространяется на содержимое AIR в изолированной программной среде приложения.
Так что это не возможно и, вероятно, вещь безопасности.