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

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

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

Регистрация: Oct 2007
Сообщений: 45
По умолчанию Глюки youtube-овского плеера для AS2 при повторном запуске

Добрый день.

На форуме поиском все что нашел - изучил, но к конечному выводу таки не пришел. Поэтому решил создать тему.

В общем есть у заказчика сайт на AS2 и он хочет чтобы прямо внутри него был список видеороликов и чтобы по клику открывался плеер ютюбовский там же.

Ну я сразу полез в гугль - там лежит пример из одной SWF-ки. В общем я этот код использовал - плеер запускается и работает нормально, но только первый раз. Как только я его убиваю (использую родной для плеера метод destroy(), опять же взято из официальной документации) начинают постоянно лететь ошибки вида:
Код:
*** Нарушение безопасности изолированной среды ***
SecurityDomain "http://s.ytimg.com/yt/swfbin/cps-vfl0JRSGx.swf" пытался получить доступ к несовместимому контексту "file://.../basic%5Fyoutube%5Fembed.swf"
(это при запуске во флеше)

Ну и если все это добро вовремя не вырубить, то плеер вобще напрочь подвисает после убиения плеера ютюбовского. Тут без разницы- в среде запущен плеер или в браузере.

Вот немного модифицированный код примера с гугля:
Код AS1/AS2:
System.security.loadPolicyFile('http://youtube.com/crossdomain.xml');
 
var ytplayer:MovieClip = _root.createEmptyMovieClip("ytplayer", 1);
 
var ytPlayerLoaderListener:Object = {
  onLoadInit: function() {
    loadInterval = setInterval(checkPlayerLoaded, 250);
  }
};
 
var loadInterval:Number;
 
 
function checkPlayerLoaded():Void {
    if (ytplayer.isPlayerLoaded()) {
        ytplayer.addEventListener("onStateChange", onPlayerStateChange);
        ytplayer.addEventListener("onError", onPlayerError);
        clearInterval(loadInterval);
    }
}
 
function onPlayerStateChange(newState:Number) {
    trace("New player state: "+ newState);
}
 
function onPlayerError(errorCode:Number) {
    trace("An error occurred: "+ errorCode);
}
 
var ytPlayerLoader:MovieClipLoader = new MovieClipLoader();
ytPlayerLoader.addListener(ytPlayerLoaderListener);
 
ytPlayerLoader.loadClip("http://www.youtube.com/v/7yZgEqNutY4", ytplayer);
 
_b.onRelease = function (){
	ytplayer.destroy();
	ytplayer._visible = false;
 
}
_b1.onRelease = function (){
	ytplayer._visible = true;
	ytPlayerLoader.loadClip("http://www.youtube.com/v/Uc8ZHQOZ95Y", ytplayer);
 
}
При нажатии на любую из этих кнопок происходит подвисание. Ну если не произошло у кого-то сразу, как иногда бывает, это происходит если перед нажатием запустить проигрывание ролика.

Значит в тестовой флешке ничего кроме этих двух кнопок _b и _b1 нету, весь код в первом кадре.

Может все же у кого-то получилось побороть этот плеер?

Старый 21.02.2011, 22:32
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Для начала попробуйте вставить в свой проект строку
Код AS1/AS2:
System.security.allowDomain("*");
где-нибудь в начале кода.
В теории эта строка позволяет загруженному с другого домена контенту рулить вашей флешкой.
__________________
Идите первым!


Последний раз редактировалось mooncar; 21.02.2011 в 22:35.
Старый 26.02.2011, 19:11
Omar2002 вне форума Посмотреть профиль Отправить личное сообщение для Omar2002 Найти все сообщения от Omar2002
  № 3  
Ответить с цитированием
Omar2002

Регистрация: Oct 2007
Сообщений: 45
Цитата:
Сообщение от mooncar Посмотреть сообщение
Для начала попробуйте вставить в свой проект строку
Код AS1/AS2:
System.security.allowDomain("*");
где-нибудь в начале кода.
В теории эта строка позволяет загруженному с другого домена контенту рулить вашей флешкой.
Спасибо огромное!
Реально помогло!

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

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

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


 


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


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