файлReference.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");
}

person Amirhosein Heydari    schedule 03.08.2013    source источник


Ответы (1)


Ознакомьтесь с документацией: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#save()

В нем говорится:

В Flash Player этот метод можно успешно вызвать только в ответ на пользовательское событие (например, в обработчике события щелчка мыши или нажатия клавиши). В противном случае вызов этого метода приведет к тому, что проигрыватель Flash Player выдаст исключение Error. Это ограничение не распространяется на содержимое AIR в изолированной программной среде приложения.

Так что это невозможно и, вероятно, связано с безопасностью.

person putvande    schedule 03.08.2013