2011-02-03 2 views
1

Примечание: Я вообще не знаю, с 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; 

} 
+0

Загрузка файла в ActionScript является асинхронной. Не протестировав его, я бы предположил, что это что-то другое, кроме загрузки, которое вызывает замораживание (например, цикл с пикселями, часть getPixel()). Код находится в ActionScript 2, старой версии ActionScript. Такие вещи, как jpg-кодирование изображений в текущей версии, намного быстрее, ActionScript 3. Если вы можете найти еще один плагин jQuery для доступа к камере, то более свежий, используя AS3, я думаю, это было бы лучше. –

ответ

0

Pedro Correia делится actionscript class, который реализует асинхронную загрузку. Он немного старый (AS2, 2007), но может помочь.

+0

Кажется, что в этом классе пользователь должен выбрать некоторые файлы для загрузки, прежде чем загрузка может быть фактически запущена. Но у меня есть данные в памяти и у меня нет локального файла –

Смежные вопросы