Javascript - найти swfobject на включенной странице и вызвать функцию javascript - PullRequest
1 голос
/ 27 апреля 2010

Я использую следующий скрипт на своем веб-сайте для воспроизведения mp3 в формате Flash. Для создания экземпляра flash-объекта я использую инфраструктуру swfobject в функции javascript. Когда функция вызывается, проигрыватель создается и добавляется на страницу.

Остальная часть сайта находится на php, а страница, вызывающая этот скрипт, включена в функцию php include. Все остальные используемые скрипты находятся на главной странице php

var playerMp3 = new SWFObject("scripts/player.swf","myplayer1","0","0","0");
    playerMp3.addVariable("file","track.mp3");
    playerMp3.addVariable("icons","false");
    playerMp3.write("player1");

    var player1 = document.getElementById("myplayer1");
    var status1 = $("#status1");

    $("#play1").click(function(){
        player1.sendEvent("play","true");
        $("#status1").fadeIn(400);
        player4.sendEvent("stop","false");
        $("#status4").fadeOut(400);
        player3.sendEvent("stop","false");
        $("#status3").fadeOut(400);
        player2.sendEvent("stop","false");
        $("#status2").fadeOut(400);
    });
    $("#stop1").click(function(){
        player1.sendEvent("stop","false");
        $("#status1").fadeOut(400);
    });
    $(".closeOver").click(function(){
        player1.sendEvent("stop","false");
        $("#status1").fadeOut(400);
    });
    $(".accordionButton2").click(function(){
        player1.sendEvent("stop","false");
        $("#status1").fadeOut(400);
    });
    $(".accordionButton3").click(function(){
        player1.sendEvent("stop","false");
        $("#status1").fadeOut(400);
    });
    $(".turnOffMusic").click(function(){
        player1.sendEvent("stop","false");
        $("#status1").fadeOut(400);
    });
});

У меня есть кнопка воспроизведения с идентификатором «# play1» и кнопка остановки с идентификатором «# stop1» на моей странице. Div на той же странице имеет идентификатор status # status1 ’, а в div есть небольшое изображение говорящего. Когда вы нажимаете кнопку воспроизведения, div с динамиком постепенно затухает, а когда вы нажимаете кнопку остановки, div с динамиком затухает, очень просто. И это работает так, как я хочу.

Но проблема в том, что когда песня заканчивается, динамик не исчезает. Есть ли простое решение для этого? Я уже пытался использовать фреймворк swfobject, чтобы получить флеш-плеер со страницы и вызвать на нем «IsPlaying», но я получаю ошибку, которую «swfobject» не может найти. Все, что мне нужно, это небольшой толчок в нужном направлении или пример, показывающий, как правильно получить воспроизводимый в данный момент аудиоплеер (во флэш-памяти), проверить, воспроизводится ли он, и, если он закончен, вызвать функцию javascript, чтобы привести к исчезновению изображения динамика снова Надеюсь, что кто-то здесь может помочь мне

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Ошибка «swfobject not found» часто возникает из-за смешения синтаксиса SWFObject 1.5 и 2.x (2.x полностью переписан и не обратно совместим). Смотри http://learnswfobject.com/advanced-topics/detecting-swfobject-version/

Код, который вы опубликовали, использует синтаксис SWFObject 1.5, что означает, что все ссылки на SWF должны быть доступны через вашу переменную player1, как вы написали.

RE: затухание, является ли значок динамика частью вашего SWF? Вы не можете «затухать» в SWF, используя CSS / JavaScript. В этом случае у вас будет два варианта:

  1. Fade IN HTML-маска НАД SWF, которая создает видимость затухания SWF. Это может быть достигнуто с помощью DIV, стилизованного под ваш фон. Вот учебник для размещения элементов HTML над SWF .

  2. Измените свой SWF, чтобы скрыть значок динамика, используя внутреннюю функцию ActionScript, и вызовите функцию, используя ExternalInterface.

0 голосов
/ 03 мая 2010

Из-за нехватки времени мы решили запустить таймер JS в фоновом режиме с длиной, равной длине mp3, воспроизводимого во флэш-памяти. Со временем я перепишу код в синтаксис swfobject 2.x. Любые предложения по этой проблеме все еще приветствуются!

0 голосов
/ 28 апреля 2010

Нет, изображение не является частью swf, и у меня нет файла .fla, поэтому я не могу поместить какой-либо код во флеш.

Мой вопрос; есть ли фрагмент javascript, который говорит файлу .swf: исчезнуть изображение динамика (которое находится в div на странице) после завершения песни.

Кстати, Роб - мой брат, и он помогает с этой проблемой.

...