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

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

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

Регистрация: Oct 2012
Сообщений: 23
По умолчанию Как правильно сделать МОСТ между JS и Flash для Opera

Всем привет.
Вот ситуация, на AS пишу:
Код AS3:
ExternalInterface.addCallback("FlashChangeUserInfo", JSChangeUserInfo);
Теперь в JS код:
PHP код:
function VideoFlashChangeUserInfo() {
    
BridgeVideo.FlashChangeUserInfo()
}
window.onload = function() {
    
BridgeVideo document["BridgeVideo"] || window["BridgeVideo"]
    
VideoFlashChangeUserInfo()

Какая цель: при загрузке страницы отправить во флеш данные. Всё просто.
Ситуация вот какая, в ФФ, Хроме - нормально всё работает, в Опере: через раз пишется, что не может понять, что такое "BridgeVideo.FlashChangeUserInfo()", то есть такое чувство, что флеш загрузился в браузер, но ещё не активировался как надо.
Если тупо написать alert(BridgeVideo), то определяет как объект, то есть на странице находит флеш, но не находит этого моста на данный момент. При этом 50\50, каждую вторую загрузку.
Костыль, который я сделал:
PHP код:
window.onload = function() {
    
setTimeout("onLoader()",1000);
}
function 
onLoader() { 
Хотелось бы узнать, как правильно делать? Конечно у меня в догадках, что может быть addEventListener вешать надо на флеш, но тоже непонятно что и как, потому что у меня должны 2 ролика загрузиться и только потом запуститься обработка, либо со стороны флеша отправлять идентификатор, что он загрузился в JS , тем же мостом.

Всё же как верно сделать и объясните, верно ли я понимаю причину того, что флеш.ролик загрузился в браузер, но ещё не активировались функции?

Старый 17.10.2012, 19:05
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 2  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Все верно вы понимаете. Вам нужно на as3 проверить, что
Код AS3:
 ExternalInterface.available === true
и повесить соответствующий флаг в js, что флеш загрузился и готов, сразу после
Код AS3:
ExternalInterface.addCallback
и вешать в js по загрузке(onload, например, хоть и избыточно)
Код:
setInterval
который будет ждать флаг.

Старый 17.10.2012, 19:20
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 3  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Я делал проще. Когда флешка загрузилась, она вызывает js функцию, которая в свою очередь вызывает функцию во флешке. Никаких таймеров и интервалов.

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

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Цитата:
Сообщение от Krusty Посмотреть сообщение
Вам нужно на as3 проверить, что
Код AS3:
 ExternalInterface.available === true
А можете пояснить, тут обязательно строгое равенство?
__________________
Нормально делай — нормально будет!

Старый 18.10.2012, 16:42
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
А можете пояснить, тут обязательно строгое равенство?
Нет, но написание строго равенства часто систематизирует код, если приучитесь так писать, то будет ощутима разница между == и ===. Но в данном случае логично писать if(ExternalInterface.available) - это стандартный пакет и все вкурсе какое именно значение там может всплыть
__________________
Марк Tween

Старый 18.10.2012, 18:55
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 6  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от tsarapkabel Посмотреть сообщение
А можете пояснить, тут обязательно строгое равенство?
Нет, просто так немного правильнее. В одном случае вы проверяете, что значение интерпретируется в логическом контексте как true, в другом-что оно равно true, и тип-boolean, что как бы дисциплинирует, да и мы сразу видим при чтении кода, что это и с чем сравнивается.

Старый 18.10.2012, 23:35
inpost вне форума Посмотреть профиль Отправить личное сообщение для inpost Найти все сообщения от inpost
  № 7  
Ответить с цитированием
inpost

Регистрация: Oct 2012
Сообщений: 23
Спасибо!

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
А flashVars не подходит?
__________________
Дети не должны знать о своих родителях

Старый 19.10.2012, 00:32
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 9  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
flashVars делает передачу js->swf при публикации, вот и все, тут прямо противоположная задача.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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