Примечание: Я вообще не знаю, с Flash/ActionScript.Как загружать файлы с помощью ActionScript асинхронно?
Я использую JQuery webcam plugin для захвата изображений с камеры. Этот плагин предоставляет код ActionScript, который загружает захваченные снимки на сервер. Он отлично работает, за исключением одного - пока файл загружает мою веб-страницу зависает.
Где я могу прочитать об отправке асинхронного файла с помощью Flash или как изменить следующий код, чтобы загрузить файл асинхронно?
public static function save(file:String):Boolean {
if ("stream" == mode) {
return true;
} else if (null != buffer) {
if ("callback" == mode) {
for (var i = 0; i < 240; ++i) {
var row = "";
for (var j=0; j < 320; ++j) {
row+= buffer.getPixel(j, i);
row+= ";";
}
ExternalInterface.call("webcam.onSave", row);
}
} else if ("save" == mode) {
if (file) {
var e = new JPGEncoder(quality);
var sal = {};
sal.sendAndLoad = XML.prototype.sendAndLoad;
sal.contentType = "image/jpeg";
sal.toString = function() {
return e.encode(JSCam.buffer);
}
var doc = new XML();
doc.onLoad = function(success) {
ExternalInterface.call("webcam.onSave", "done");
}
sal.sendAndLoad(file, doc);
/*
ExternalInterface.call('webcam.debug', "error", "No save mode compiled in.");
return false;
*/
} else {
ExternalInterface.call('webcam.debug', "error", "No file name specified.");
return false;
}
} else {
ExternalInterface.call('webcam.debug', "error", "Unsupported storage mode.");
}
buffer = null;
return true;
}
return false;
}
Загрузка файла в ActionScript является асинхронной. Не протестировав его, я бы предположил, что это что-то другое, кроме загрузки, которое вызывает замораживание (например, цикл с пикселями, часть getPixel()). Код находится в ActionScript 2, старой версии ActionScript. Такие вещи, как jpg-кодирование изображений в текущей версии, намного быстрее, ActionScript 3. Если вы можете найти еще один плагин jQuery для доступа к камере, то более свежий, используя AS3, я думаю, это было бы лучше. –