Проблема с получением Javascript для работы с SWF-файлом с использованием ExternalInterface - PullRequest
0 голосов
/ 16 октября 2010

У меня есть SWF-файл, добавленный на HTML-страницу. Попытка сделать простую операцию - перейти и воспроизвести определенный кадр в SWF, используя JavaScript. Я использую ExternalInterface, чтобы сделать это, но из-за жизни я не могу заставить двоих общаться.

Я добавляю весь код, но при нажатии на ссылку, которая вызывает javascript, он говорит, что мой flash-объект не определён?

Вот код ActionScript:

import flash.external.*;

function getFromJavaScript(frame:int):void 
{
 gotoAndPlay(frame);
}

ExternalInterface.addCallback("sendtoFlash",getFromJavaScript);

Вот JavaScript:

function getFlashMovieObject(movieName){
if (window.document[movieName]){
    return window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet")==-1){
    if (document.embeds && document.embeds[movieName])
        return document.embeds[movieName];
}
else{
    return document.getElementById(movieName);
}
}

function sendtoSwf(numb)
{
  var flashMovie = getFlashMovieObject("tour-flash");
  flashMovie.sendToFlash(numb);
}

А вот встроенный SWF:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="335" id="tourFlash" align="middle">
<param name="movie" value="/media/Assets/Flash/tourFlash.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="/media/Assets/Flash/tourFlash.swf" width="600" height="335">
  <param name="movie" value="/media/Assets/Flash/tourFlash.swf" />
  <param name="quality" value="high" />
  <param name="bgcolor" value="#ffffff" />
  <param name="play" value="true" />
  <param name="loop" value="true" />
  <param name="wmode" value="window" />
  <param name="scale" value="showall" />
  <param name="menu" value="true" />
  <param name="devicefont" value="false" />
  <param name="salign" value="" />
  <param name="allowScriptAccess" value="sameDomain" />
<!--<![endif]-->
  <a href="http://www.adobe.com/go/getflash">
 <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
  </a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>

Есть идеи? Я полностью в тупике! Для примера проблемы, посмотрите здесь: http://www.onehealthfitness.com.au/get-started/virtual-tour.aspx

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

Похоже, вы используете неправильное значение в вызове getFlashMovieObject ("tour-flash"), в вашем коде нет объекта с именем "tour-flash", не так ли?

Кроме того, я бы порекомендовал добавить кнопку отключения звука, чтобы посетитель мог включить звук. Я склонен оставлять страницы, которые воспроизводят звук, который я не могу остановить.

1 голос
/ 16 октября 2010

Ларс прав.Кроме того, вы игнорируете ситуацию с Firefox.Я думаю, что вам нужно добавить «вставлять» в HTML.

Вот официальная демонстрация "ExternalInterface":

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html#includeExamplesSummary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...