Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2009, 16:32
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

JScript to Flash, если флешка грузится динамически
Привет всем!

Если кто работает с флешем или просто знает решение проблемы - отпишитесь, пожалуйста.

Столкнулся с интересной задачкой - передача строки из Ява-скрипта во Флеш.

Итак, во флешке прописано:
Код:
ExternalInterface.addCallback('toFlash', null, fromJS);
function fromJS(t){// и тд
В Ява-скрипте:
Код:
function toFlash(someData){
    var myFL = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["flashka"];
    myFL.toFlash(someData);
}
Если флешка (<object... <embed... и тд) прописывается сразу в HTML-коде страницы, то данная конструкция работает идеально во всех браузерах.
Однако, если флешка создается в коде страницы динамически, то работает везде, кроме IE (проверял в IE7).

Подскажите, пожалуйста, возможные пути решения.

pS: Во флешке всего один кадр, поэтому SetVariable не подходит)
ppS: ActionScript 2

Заранее спасибо откликнувшимся!

Последний раз редактировалось ExtendedPlay, 07.11.2009 в 16:50.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2009, 11:22
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Должно работать независимо от того, как добавляется флешка в документ. Я думаю тут проблема в получении ссылки на флешку в первой строке функции.
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2009, 12:08
Новичок на форуме
Отправить личное сообщение для doochik Посмотреть профиль Найти все сообщения от doochik
 
Регистрация: 09.11.2009
Сообщений: 1

Попробуйте сделать так:
if (ExternalInterface.available) {
   init();                       
} else {                          
   var timer:Timer = new Timer(100);
   timer.addEventListener(TimerEvent.TIMER, timerHandler);
   timer.start();                                         
}                                                          

private function timerHandler(event:TimerEvent):void {
   if (ExternalInterface.available) {
      stopTimer(Timer(event.target));
      init();
   }
   if (_tryCounter-- < 0) {
      trace('Stop work. Timer runs 50 times and External interface is not available.');
      stopTimer(Timer(event.target));
   }
}


а в init уже вешать callback
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2009, 18:32
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Вспомнил такой момент: если у тега <object> не указан id в ИЕ ExternalInterface работать не будет.
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2010, 17:50
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Если не решили еще проблему, попробуйте загрузить флешку с помощью http://code.google.com/p/swfobject/
После этого нормально вроде все подцепляется.

Если решили каким-то другим путем - дайте плиз знать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск