Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.09.2010, 19:45
Kubik129 вне форума Посмотреть профиль Отправить личное сообщение для Kubik129 Найти все сообщения от Kubik129
  № 1  
Ответить с цитированием
Kubik129

Регистрация: Feb 2010
Сообщений: 12
По умолчанию uncaught exception при вызове ExternalInterface callback

Приветы всем.
Ситуация следующая: хочется организовать вызов функции Actionscript из javascript'a. Для этого использую класс ExternalInterface и его метод addCallback, как описано например здесь.
Тестовый пример сделал как описано в этом примере. И все нормально работает.
Трудности начались при попытке использовать эту схему в конечном проекте. Код хтмл страниц генерируется на стороне сервера пхпешными скриптами и выдается клиенту уже в готовом виде. Для работы с клиентской частью используется prototype.js фреймворк.
На страницу помещаем флешку, которая будет принимать сигналы от javascript'a и выполнять нужные нам действия. Делаю все тоже самое как в примере, во флешке прописываю addCallback'и, цепляю объекты flash и вызываю функции этих flash объектов, которые были объявлены в addCallback. И получаю такую ошибку:
uncaught exception: Error in Actionscript. Use a try/catch block to find error.
попытка насовать try/catch внутрь actionscript'a ничего не дает, валится гораздо раньше, на попытке вызвать функцию, а не от неправильной работы самой функции.

И теперь собственно вопрос что это вообще за ошибка такая, от чего она может возникать, в какую сторону копать чтобы хоть что-то нарыть ?
Всем заранее спасибо за помощь и идеи.

Старый 02.09.2010, 11:10
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Что говорит ExternalInterface.available?

Старый 02.09.2010, 11:55
Kubik129 вне форума Посмотреть профиль Отправить личное сообщение для Kubik129 Найти все сообщения от Kubik129
  № 3  
Ответить с цитированием
Kubik129

Регистрация: Feb 2010
Сообщений: 12
ExternalInterface.available говорит true, я вообще использую вот такую конструкцию чтобы определить callback'и:
Код AS3:
if (ExternalInterface.available) {
  try {
    ExternalInterface.addCallback("myFunction", myFunction);
    textField.text = "addcallback done";
  } catch (e) {
    textField.text = e;
  }
}
ну и получаю addcallback done


Последний раз редактировалось Kubik129; 02.09.2010 в 12:04.
Старый 02.09.2010, 12:21
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
И когда возникает ошибка? При попытке вызвать функцию myFunction из JavaScript?

Старый 02.09.2010, 12:47
Kubik129 вне форума Посмотреть профиль Отправить личное сообщение для Kubik129 Найти все сообщения от Kubik129
  № 5  
Ответить с цитированием
Kubik129

Регистрация: Feb 2010
Сообщений: 12
Да, ошибка возникает при вызове функции myFunction в javascript

Старый 02.09.2010, 12:57
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
что в функции? Попробуйте поставить прерывание в самом начале функции, что бы точно определить момент возникновения ошибки. Возникает ли ошибка, если функция пустая?

Старый 02.09.2010, 13:03
Kubik129 вне форума Посмотреть профиль Отправить личное сообщение для Kubik129 Найти все сообщения от Kubik129
  № 7  
Ответить с цитированием
Kubik129

Регистрация: Feb 2010
Сообщений: 12
хм, мысль интересная, сейчас буду пробовать

Добавлено через 17 минут
попробовал... приведу код actionscript'a
Код AS3:
function setText () {
  textField.text = "function work";
}
if (ExternalInterface.available) {
  try {
    ExternalInterface.addCallback("myFunction", setText)
    textField.text = "addCallback done";
  } catch (e) {
    textField.text = e;
  }
}
собственно функция setText должна просто менять текстовое поле.
в разных вариантах: при пустой функции, при вставке конструкции try/catch, и при простой попытке смены текста выдается эта нехорошая ошибка.
Мое подозрение, что ошибка возникает в момент связи между js и as, а не при исполнении функции as.
Можно ли посмотреть пошагово процесс установки соединения и передачи данных между js и as ?

Старый 02.09.2010, 14:54
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 8  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
а сама js-функция точно работает?

вставьте в хтмл кнопку с onClick="myFunction();" и посмотрите, что происходит.
смотреть надо в дебаг-режиме каком-нибудь

Старый 02.09.2010, 15:59
Kubik129 вне форума Посмотреть профиль Отправить личное сообщение для Kubik129 Найти все сообщения от Kubik129
  № 9  
Ответить с цитированием
Kubik129

Регистрация: Feb 2010
Сообщений: 12
Сама javascript функция занимается только вызовом as-функции выглядит она так:
Код AS3:
function changeText () {
  var flashObj = document["myFlashId"];
  flashObj.myFunction();
}
да, она точно работает, ее я firebug'ом посмотрел. До вызова myFunction все отлично, но на нем и вылезает эта ошибка

Старый 02.09.2010, 17:08
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 10  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Наверное, у вас что-то необычное в коде происходит, если ошибка происходит именно в момент вызова js. Я бы подумал, что ошибка происходит от того, что вы из js вызываете обратно as, но если и пустая js-функция не работает - то, значит, нет.

Перечисляйте, наверное, какие у вас нетривиальные вещи использованы, на чём пишете, чем тестируете, браузер... Какая-нибудь мелочь способна решить проблему.

У меня, вот, ошибка возникала из-за того, что имя флешки (точнее - id этой флешки на странице) начиналось с цифры.


Последний раз редактировалось Stargazer; 02.09.2010 в 19:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
actionscript , exception , try/catch , uncaught

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.