Почему мой ActionScript3 не вызывает мою функцию JavaScript? - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть сценарий action, который воспроизводит фрагмент ролика. Когда видеоклип закончится, я хочу, чтобы Javascript удалил объект Flash со страницы. Я не могу заставить его работать.

Когда я тестирую actionScript во Flash, я не получаю никаких ошибок компиляции, и все мои трассировки выполняются, когда я ожидаю. Я также не получаю никаких ошибок JavaScript, хотя никогда не вызывается функция RemoveFlash().

Вот мой ActionScript3:

import fl.video.*;
import flash.external.ExternalInterface;

MyPlayer.addEventListener(VideoEvent.COMPLETE, completePlay);

MyButton.addEventListener(MouseEvent.MOUSE_DOWN, interruptPlay);

function completePlay(e:VideoEvent):void
{
    trace("video completed");
    ExternalInterface.call("RemoveFlash");
}

function interruptPlay(e:MouseEvent):void
{
    trace("video interrupted");
    MyPlayer.stop();
    ExternalInterface.call("RemoveFlash");
}

А вот и мой JS:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script language="javascript" type="text/javascript" src="/Scripts/jquery-1.5.min.js"></script>
    <script type="text/javascript" src="/Scripts/swfobject2.js"></script>

    <script type="text/javascript">
        $(document).ready(function(){

            // Remove GreenPlayer
            function RemoveFlash()
            {
                alert("remove");
                $("#GreenPlayer").remove();
            }

            // add greenscreen swf
            var flashvars = {};
            flashvars.AllowScriptAccess="always";

                    var params = {};
            params.wmode = "transparent";
            params.AllowScriptAccess = "always";

            swfobject.embedSWF("/swf/GreenPlayer2.swf", "GreenPlayer", "200", "400", "8.0.0", '', flashvars, params);

        });
    </script>
</head>
<body>
        <div id="GreenPlayer">asd</div>
</body>
</html>

Есть мысли?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Ваша RemoveFlash функция является локальной для вашего готового обработчика, и flash пытается вызвать глобальную функцию с именем RemoveFlash (). Переместите его за пределы обработчика нагрузки, и он будет работать ...

<script type="text/javascript">
    function RemoveFlash() {
       $("#GreenPlayer").remove();
    }      

    $(document).ready(function(){
        // add greenscreen swf
        var flashvars = {AllowScriptAccess: "always"};
        var params = {
           wmode: "transparent",
           AllowScriptAccess: "always"
        };
        swfobject.embedSWF("/swf/GreenPlayer2.swf", "GreenPlayer", "200", "400", "8.0.0", '', flashvars, params);

    });
</script>
1 голос
/ 28 февраля 2011

Возможно, функция RemoveFlash() находится вне области действия swf, потому что она есть в анонимной функции. Попробуйте переместить функцию RemoveFlash() в глобальную область видимости (за пределами $(document).ready) и посмотрите, поможет ли это.

...