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

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

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

Регистрация: Nov 2013
Сообщений: 47
По умолчанию Как скомпилировать ExternalInterface под FlashDevelop

В общем не особо хорошо знаком с FlashDevelop. Сижу через виртуалку. Пытаюсь запустить приложение, в котором используется вызов класса ExternalInterface. Так при дебаге значение ExternalInterface.available равно false. Как сделать его true? Я добавил папку через менеджер настроек добавив там такой путь

где начало путь \\psf это как я понял корень в виртуалке Parallels.
Также пробовал создать файл в папке FlashPlayerTrust файл с именем MyTrustFile.cfg внутри которого такая строчка \\psf\Home\Desktop\genplans_flash_src. Не помогло.
Вот окно настроек проекта может там что-то нужно поменять



При проверке версии плеера тут , вроде бы дебаг стоит. Во FD я нажимаю на синюю кнопку Test Project. В общем просьба объяснить что я делаю не так. До того как спрашивать перерыл и так много материала. Я не понял как вообще генерируется html страница в FB. У меня есть в папке bin index.html. Содержание файла index.html

Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test</title>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/swfaddress.js"></script>
<script type="text/javascript">
	var params = {bgcolor:"#FFFFFF", scale:"noscale"};
	var attr = {
	    id: "externalDynamicContent",
	    name: "externalDynamicContent",
	    align:"center"
	};
	swfobject.embedSWF("Plan.swf", "Plan", "900", "604", "10.0.0", 0, {xml:"xml/data.xml"}, params, attr);
</script>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<br><br>
<div id="Plan"></div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>

</body>
</html>


Последний раз редактировалось helio; 25.04.2014 в 13:08.
Старый 25.04.2014, 13:30
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
ExternalInterface – это взаимодействие флешки с браузером (с JavaScript'ом). Запускайте детище из браузера – и ExternalInterface станет true. Без всяких этих страшных окошек с сайта макромедии )

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
откройте это в браузере.
_______опоздал)
__________________
Reality.getBounds(this);

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

Регистрация: Nov 2013
Сообщений: 47
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
ExternalInterface – это взаимодействие флешки с браузером (с JavaScript'ом). Запускайте детище из браузера – и ExternalInterface станет true. Без всяких этих страшных окошек с сайта макромедии )
Объясню ещё раз что я имею ввиду. Мне нужно запретить скролл браузера. Так вот использую эту либу. Так вот в главном классе приложения пишу такую строчку

Код AS3:
BlastedMouseWheelBlock.initialize(stage, "externalDynamicContent");
где externalDynamicContent это id, указанный в html-коде в объявлении атрибутов.
и у меня постоянно в FB выскакивает исключение:
[Fault] exception, information=UninitializedError: No External Interface available. Please, disable BlastedMouseWheelBlock
А вот полный вывод окна Output в FlashDevelop:
Код:
Running process: C:\Program Files\FlashDevelop\Tools\fdbuild\fdbuild.exe "\\psf\Home\Desktop\genplans_flash_src\Plan2.as3proj" -ipc 8c0fa801-1260-442f-b83f-717d6dce9787 -version "4.6.0; 3.9" -compiler "C:\Program Files\FlashDevelop\Tools\flexsdk" -library "C:\Program Files\FlashDevelop\Library"
Building Plan2
mxmlc -load-config+=obj\Plan2Config.xml -debug=true -incremental=true -swf-version=10 -o obj\Plan2635338667880000000
Incremental compile of 1
 Loading configuration file C:\Program Files\FlashDevelop\Tools\flexsdk\frameworks\flex-config.xml
Loading configuration file \\psf\Home\Desktop\genplans_flash_src\obj\Plan2Config.xml
Files changed: 1 Files affected: 0
obj\Plan2635338667880000000 (695103 bytes)
(fcsh)Build succeeded
Done(0)
[Starting debug session with FDB]
[Fault] exception, information=UninitializedError: No External Interface available. Please, disable BlastedMouseWheelBlock
Кусок кода из класса BlastedMouseWheelBlock
Код AS3:
if (ExternalInterface.available)
{
    isMac = Capabilities.os.toLowerCase().indexOf("mac") != -1;
 
    externalJavascriptFunction = EXTERNAL_JAVASCRIPT_FUNCTION_P1 + flashObjectID + EXTERNAL_JAVASCRIPT_FUNCTION_P2;
    BlastedMouseWheelBlock.nativeStage = stage;
    stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseOverStage);
    stage.addEventListener(Event.MOUSE_LEAVE, mouseLeavesStage);
    stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
 
    ExternalInterface.call("eval", externalJavascriptFunction);
 
    ExternalInterface.addCallback("scrollHappened", scrollHappened);
 
    ExternalInterface.call("registerEventListeners", isMac);
}
else
{
    throw new UninitializedError(NO_EXTERNAL_INTERFACE_ERROR);
}
Так как быть, прежде чем запустить html в браузере мне ведь нужно скомпилировать успешно, а потом уже тестить в браузере? Или вы говорите о методе когда при дебаге в браузере, т.е. вместо плеера открывается браузер?

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Наверное стоит попробовать обработать исключение, которое генерируется тут:
Код AS3:
throw new UninitializedError(NO_EXTERNAL_INTERFACE_ERROR);
, или просто закоментить эту строчку.

Добавлено через 1 минуту
Или же вот так сделать:
Код AS3:
if (ExternalInterface.available)
{
    BlastedMouseWheelBlock.initialize(stage, "externalDynamicContent");
}

Старый 25.04.2014, 14:24
helio вне форума Посмотреть профиль Отправить личное сообщение для helio Найти все сообщения от helio
  № 6  
Ответить с цитированием
helio

Регистрация: Nov 2013
Сообщений: 47
Цитата:
Сообщение от alexandrratush Посмотреть сообщение
Наверное стоит попробовать обработать исключение, которое генерируется тут:
Добавлено через 1 минуту
Или же вот так сделать:
Код AS3:
if (ExternalInterface.available)
{
    BlastedMouseWheelBlock.initialize(stage, "externalDynamicContent");
}
так строчка эта строчка никогда не выполнится в дебаге, т.к. как выше написали, что значение ExternalInterface.available будет равно true, только если будет запущен браузер.

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Подождите, я запутался в том что вам нужно.
Если флеш запущен в браузере, то выполниться первый блок if..else, так как ExternalInterface.available будет равно true.
Если же флешке недоступен контейнер, то выполняется второй блок if..else.

Чтобы вы смогли собрать приложение, вам нужно обработать исключение, написать типа "Все ок, только запрет прокрутки вы сможете увидеть запустив приложение в броузере!!!"

Не то?

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

Регистрация: Nov 2013
Сообщений: 47
alexandrratush, как в FlashDevelop запустить swf через браузер? Я знаю как это делается во FlashBuilder, а вот FD я незнаю.

UPD. Я пытаюсь скомпилировать код в FD. Код не скомпилируется, т.к. ExternalInterface.available не равно true, потому что я не запустил браузер. А как я запущу приложение в браузере, если я не могу его скомпилировать нормально.


Последний раз редактировалось helio; 25.04.2014 в 14:54.
Старый 25.04.2014, 14:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
А вам зачем через FD, но в браузере? Если задача настолько минимальна, что просто запретить скролл – то протестировать однажды в браузере (без FD, ванильно копируя файлы) и пометить кусок кода как работающий?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Так как быть, прежде чем запустить html в браузере мне ведь нужно скомпилировать успешно
Цитата:
А вот полный вывод окна Output в FlashDevelop:
...
(fcsh)Build succeeded
Done(0)

[Starting debug session with FDB]
[Fault] exception, information=UninitializedError: No External Interface available. Please, disable BlastedMouseWheelBlock
Все у Вас успешно компилируется. Просто откройте html в браузере..
__________________
Reality.getBounds(this);

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

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

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


 


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


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