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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Яндекс Браузер и ExternalInterface

Здравствуйте.
При тестировании в Яндекс Браузере обнаружилась очень неприятная новость что ExternalInterface не работает.
Флеш атачу swfobject'ом. Подгружаю две свф, одна (прелоадер) показывается пока не загрузиться основная. Основная после загрузки сообщает через ExternalInterface что убрать прелоадер и показать основную флешку.
Флешки скрываю показываю изменением размера
Код:
function Router(name)
		{
			return swfobject.getObjectById(name);
		}
Код:
function resizeFlash(newWidth,newHeight)
		{
	        if(newWidth)
	        {
	            $("#swf-game").css("width",newWidth);
	        }
	        if(newHeight)
	        {
	            $("#swf-game").css("height",newHeight);
	        }
	    }
Код:
function removePreloader()
		{
			console.log("removePreloader");

			var preloader = document.getElementById("swf-preloader");
				preloader.parentNode.removeChild(preloader);
			resizeFlash(749, 660);

			var bridge = Router("swf-game");
			if (bridge)
			{
				if (cache.user)
				{
					console.log('Send User Info')
					bridge.onUserInfo(cache.user);
				}

				if (cache.friend)
				{
					console.log('Send Friends Info')
					bridge.onFriendInfo(cache.friend);
				}
			}
		}
Кто имеет какие предположения почему не работает ExternalInterface?
__________________
return this...


Последний раз редактировалось AlexCooper; 26.03.2013 в 21:28.
Старый 26.03.2013, 21:14
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
отключен JS?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от GBee Посмотреть сообщение
отключен JS?
немогу найти где это проверить, но я думаю врятли.

Добавлено через 1 минуту
включен.
__________________
return this...

Старый 26.03.2013, 21:28
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 4  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
Кто имеет какие предположения почему не работает ExternalInterface?
Не работает локально? Да , не работает на localhost даже при компиляции -use-network=false
Самый простой способ исправить - тестировать через локальный вебсервер
__________________
...

Старый 26.03.2013, 21:34
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 5  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Александр Мостовой Посмотреть сообщение
Не работает локально? Да , не работает на localhost даже при компиляции -use-network=false
Самый простой способ исправить - тестировать через локальный вебсервер
Вы меня не поняли. Localhost тут не причем. Приложение работает под opera, chrome, mozzilla, IE. А вот в Яндекс Браузере не вызывается JS методы из флеша. Покрайней мере это мой пока последний вердикт. Грешил на то что флешка до загрузки свёрнута в 0х0 пикселей, (недавно здесь же говорилось, что некоторые браузеры вообще не атачат такие флешки) развернул на 1х1 да и на весь экран и все равно нет никакой реакции на ExternalInterface.call()
__________________
return this...

Старый 26.03.2013, 21:42
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 6  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Цитата:
Не работает локально?
Цитата:
Приложение работает под opera, chrome, mozzilla, IE. А вот в Яндекс Браузере не вызывается JS методы из флеша.
Ну я все равно не понял, вы тестите локально или на удаленном сервере? Просто возможен вариант что не работает только локально, а на при выкладывании на сервер все ок.

В swfobject
allowscriptaccess = "always" (sameDomain)?
__________________
...

Старый 26.03.2013, 21:46
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 7  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Код AS3:
this.loaderInfo.addEventListener(Event.COMPLETE, initApplication);
 
private function initApplication(e:Event):void {
			GlobalData.external.call('removePreloader'); // JS - функция см. первый пост
		}
SWFObject
Код:
<script type="text/javascript">
		
		// Load the game swf
		var gameSwfUrl = <?php echo $application; ?>;
        var preloaderSwfUrl = <?php echo $preloader; ?>;
		var flashVars = {
			"version": "001.003.049"
		};

		var requiredFlashVersion = "10.2.0";

		// Preloader swf
		swfobject.embedSWF(
			preloaderSwfUrl, // SWF URL
			"swf-preloader", // Replacement element ID
			'750', '660', // Dimensions
			requiredFlashVersion,
			"", // Flash requirement and express install URL
			{}, // Flash vars
			{
				quality			: 'high',
				pluginspage		: 'http://www.macromedia.com/go/getflashplayer',
				wmode			: 'opaque',
				devicefont		: 'false',
				allowFullScreen	: 'true',
				allowScriptAccess	: 'always',
			},
			{name:"swf-preloader"} // Embedded object attributes
		);

      
		// Game swf
		swfobject.embedSWF(
			gameSwfUrl,//gameSwfUrl, // SWF URL
			"swf-game", // Replacement element ID
			'750', '640', // Dimensions
			requiredFlashVersion,
			"", // Flash requirement and express install URL
			flashVars, // Flash vars
			{
				quality			: 'high',
				pluginspage		: 'http://www.macromedia.com/go/getflashplayer',
				wmode			: 'opaque',
				devicefont		: 'false',
				allowFullScreen	: 'true',
				allowScriptAccess	: 'always',
			},
			{name:"swf-game"} // Embedded object attributes
		);
        resizeFlash(1,1); // JS - функция, см. первый пост
		
	</script>
HTML-разметка
Код:
<div id="centered">

    	<div id="gameContainer">
			<!-- Game swf -->
			<div id="swf-game"></div>
			<div id="swf-preloader">
				<!-- Alternative content for people who don't have an up-to-date Flash install-->
				<div id="noFlashDiv">
					<img alt="You need an updated Adobe Flash Player to play MindBattle!" src="/static/facebook/canvas/error_flash.jpg" width="400" height="316" />
					<p>Click here to get the latest version of Adobe Flash Player</p>
					<a href="//get.adobe.com/flashplayer/" title="Get Flash Player!" id="getFlashBtn" target="_blank">
						<img alt="Update!" src="/static/facebook/canvas/error_flashButton.jpg" />
					</a>   
				</div>
			</div>

		</div>
	</div>
и чуть стилей
Код:
<style type="text/css">

  	#centered
	{
		margin:auto;
		width: 750px;
		padding-top: 20px;
		cursor:default;
	}

  	#swf-game
  	{
		width:0;
		height:0;
		margin:0px;
		padding:0px;
		z-index: 3;
	}
Добавлено через 5 минут
Цитата:
Сообщение от Александр Мостовой Посмотреть сообщение
вы тестите локально или на удаленном сервере?
На сервере
__________________
return this...

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
У меня работает. Правда, я на маке, это не самый частый случай, но все же не думаю что работа Yandex.браузера сильно отличается на разных OS. Вставляется так же swfObject'ом, вызывается так же ExternalInterface.call(). Никаких финтов ушами не делается. Единственное что - мы после вызова ExternalInterface флешку сдвигаем в невидимую область (то есть не размер меняем, а просто убираем ее далеко-далеко наверх или там влево).
В общем - работает там ExternalInterface, делайте тестовое приложение, ищите ошибку на своей стороне.
__________________
...вселенская грусть

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Обнаружил что в Яндекс.Браузере не срабатывает обработчик
Код AS3:
this.loaderInfo.addEventListener(Event.COMPLETE, initApplication);
 
private function initApplication(e:Event):void {
	GlobalData.external.call('removePreloader'); // JS - функция см. первый пост
}
либо событие приходит до того как я подписался. Кто-то знает об особенностях подгрузки СВФ у Яндекс.Браузер?

Добавлено через 1 минуту
подписуюсь в конструкторе.

Добавлено через 32 минуты
все. Нашел проблему. Каменем преткновением оказался css стиль с настройками 0 width 0 height
__________________
return this...


Последний раз редактировалось AlexCooper; 27.03.2013 в 00:55.
Создать новую тему Ответ Часовой пояс GMT +4, время: 07:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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