Внешний интерфейс AS3 / JavaScript и загрузка файлов - PullRequest
2 голосов
/ 30 декабря 2011

Я пытаюсь создать приложение для загрузки нескольких файлов из внешнего интерфейса, но оно не работает.

AS3:

var fileRef:FileReferenceList;

ExternalInterface.addCallback('selectFiles', showDialog);

 function showDialog()
{
  fileRef = new FileReferenceList();
  fileRef.browse();

//  ExternalInterface.call('ASalert');
}

JavaScript / jQuery:

$(function(){
  var uploader = this['_uploader'];

  $('#selectFiles').click(function(){
    uploader.selectFiles();
  })
})

function ASalert() {
  alert('Fired');
}

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

Когда я запускаю его как положено, я получаю следующую ошибку:

Error calling method on NPObject

При поиске в Google использовался бесконечный список руководств по загрузке файлов или использованию externalInterface в AS3, но ничего об их совместном использовании!

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Попробуйте обернуть ваш оператор ExternalInterface.addCallback('selectFiles', showDialog); в условие, которое проверяет наличие ExternalInterface:

if(ExternalInterface.available)
{
    ExternalInterface.addCallback('selectFiles', showDialog); 

}

Кроме того, даже если это решит эту проблему, у вас возникнут проблемы с этим:

function showDialog() 
{ 
  fileRef = new FileReferenceList(); 
  fileRef.browse(); 

//  ExternalInterface.call('ASalert'); 
}

Вы не можете вызвать FileReferenceList.browse() без какого-либо взаимодействия с пользователем, например, щелчком мыши или нажатием клавиши.Обойти это невозможно.

2 голосов
/ 31 декабря 2011

Разве здесь не проблема, что вы можете вызвать browse() только из события взаимодействия?

Adobe говорит:

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

Попробуйте установить проигрыватель флэш-отладки и посмотрите, получите ли вы это исключение, или попробуйте перехватить его и отобразить сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...