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

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

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

Регистрация: Aug 2010
Сообщений: 44
Question ExternalInterface.addCallback не хочет дружить с InternetExplorer

Здравствуйте. Возникла проблема. Пытаюсь научиться передавать переменные из JavaScript во Flash.

В итоге все браузеры понимают и хром и лиса, а интернет експловер не хочет и находит кучу ошибок =)

Вот пример сделан на скорую руку чтобы нагляднее показать. (Извините за маленькую небрежность оформления).

http://ownerofsuccuby.narod.ru/TestTemp/test.html

html код:
Код AS1/AS2:
flash.system.Security.allowDomain("*");
 
ExternalInterface.addCallback("mFlashFunction",myffunction);
 
function myffunction(t:String):void {
  mytext.text=t;	
}
AS3 код:
Код:
<HTML>

<script>
function mPost(){
  var MyFlsh=document.getElementById('MyFlash');
  var MyFlsh2=document.getElementById('MyFlash2');
  var MyTxt=document.getElementById('MyText').value;
  MyFlsh.mFlashFunction(MyTxt);
  MyFlsh2.mFlashFunction(MyTxt);
}
</script>

<form>
  <input type="text" id="MyText"/>
  <input type="button" value="ok" onclick="mPost()"/>
</form>


<EMBED SRC="./MC.swf" id="MyFlash" width="400" height="300" autostart="true" loop="true">



<object type="application/x-shockwave-flash" id="MyFlash2" data="MC.swf" width="800" height="600">
    <param name="quality" value="high" />
    <param name="allowScriptAccess" value="always" />
    <param name="allowFullScreen" value="true" />
    <param name="menu" value="false" />
    <param name="wmode" value="transparent" />
    <param name="movie" value="MC.swf" />  <!-- Не срабатывает -->
    <param name="allowScriptAccess" value="always" />
    <embed type="application/x-shockwave-flash" id="MyFlash2" pluginspage="http://get.adobe.com/flashplayer/" wmode="transparent" src="MC.swf" width="800" height="600"> 
    <noembed><img src="images/no_flash.png" alt="No flash" width="800" height="600" /></noembed>
    </embed>    
</object>

</HTML>
Если кто-то знает в чём проблема, подскажите пожалуйста. Как это подружить с Интернет Экспловером =))
Извините за малость кривой код и русский язык - просто мозг уже отказывается работать =)

Старый 10.05.2012, 01:21
dmitry bond вне форума Посмотреть профиль Отправить личное сообщение для dmitry bond Найти все сообщения от dmitry bond
  № 2  
Ответить с цитированием
dmitry bond
 
Аватар для dmitry bond

Регистрация: Jan 2010
Адрес: владивосток
Сообщений: 250
Можно еще попробовать через Setvariable.
Код:
getMovie().SetVariable("message","data")
Потом просто во флеше проверяешь каждый кадр, если переменная появится.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Было такое. Консоль ошибок в IE проверьте. Вероятно там что-то типа "mFlashFunction не является методом..." или в таком духе. Кажется связано было с тем, что этот метод не успевал проинициализироваться, и IE тупо не видел его у объекта флешки.
Попробуйте использовать для публикации флешки SWFObject.

PS. И временно закомментируйте в JS строку "var MyTxt=...", оставьте там вообще самое необходимое для проверки одной флешки с ExternalInterface - возможно IE, анализируя функцию JS, просто не добирается до нужной строки из-за ошибок в предыдущих.

PPS. У вас еще заголовочки кода перепутаны в сообщении - html и AS3.
__________________
Идите первым!


Последний раз редактировалось mooncar; 10.05.2012 в 01:35.
Старый 10.05.2012, 02:09
OwnerOfSuccuby вне форума Посмотреть профиль Отправить личное сообщение для OwnerOfSuccuby Найти все сообщения от OwnerOfSuccuby
  № 4  
Ответить с цитированием
OwnerOfSuccuby

Регистрация: Aug 2010
Сообщений: 44
Огромное спасибо за ответы. Силой магической магии всё заработало. Походу тег эмбед и всё что с ним связано всё портил ) без него работает. В исходной флешке его и не было - а тут я приписал его для допроверки результата. Оказалось что я дописал неправильно =)))

Но зато сделал вывод - где то в оригинальной версии у меня идут наложения раз не работает.

Вот код который магическим образом =))) запустился =) Может когда нибудь кому то пригодится =)))

Код HTML

Код:
<HTML>

<script>
function mPost(){
  var MyFlsh2=document.getElementById('MyFlash2');
  var MyTxt=document.getElementById('MyText').value;
  MyFlsh2.mFlashFunction(MyTxt);
}
</script>

<form>
  <input type="text" id="MyText"/>
  <input type="button" value="ok" onclick="mPost()"/>
</form>



<object type="application/x-shockwave-flash" id="MyFlash2" data="MC.swf" width="800" height="600">
    <param name="quality" value="high" />
    <param name="allowScriptAccess" value="always" />
    <param name="allowFullScreen" value="true" />
    <param name="menu" value="false" />
    <param name="wmode" value="transparent" />
    <param name="movie" value="MC.swf" />  <!-- Не срабатывает -->
    <param name="allowScriptAccess" value="always" />
    <embed type="application/x-shockwave-flash" id="MyFlash2" pluginspage="http://get.adobe.com/flashplayer/" wmode="transparent" src="MC.swf" width="800" height="600"> 
    <noembed><img src="images/no_flash.png" alt="No flash" width="800" height="600" /></noembed>
    </embed>    
</object>

</HTML>
Код Flash (не менял =)):

Код AS3:
flash.system.Security.allowDomain("*");
 
ExternalInterface.addCallback("mFlashFunction",myffunction);
 
function myffunction(t:String):void {
  mytext.text=t;	
}
Кстате да, я в первом посту ещё и перепутал названия цитат с кодами =) Спасибо что поправили.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Не пригодится. Все используют swfObject.embedSwf уже давно
__________________
Марк Tween

Старый 10.05.2012, 03:35
OwnerOfSuccuby вне форума Посмотреть профиль Отправить личное сообщение для OwnerOfSuccuby Найти все сообщения от OwnerOfSuccuby
  № 6  
Ответить с цитированием
OwnerOfSuccuby

Регистрация: Aug 2010
Сообщений: 44
Попробую ) Спасибо за совет.


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

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

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


 


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


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