Javascript mousemove событие не срабатывает, когда мышь находится над вспышкой - PullRequest
1 голос
/ 25 января 2012

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

Проблема в том, что когда мышь находится над флэш-объектом, она больше не запускает событие javascript. Я протестировал его на Chrome, и он, кажется, работает, но Firefox не хочет сотрудничать.

Мой флеш-объект расположен в центре сайта и имеет прозрачный фон. Так и должно быть. Кроме того, я бы не хотел переносить действие в ActionScript по двум причинам:

  1. Ширина веб-сайта не постоянна (например, в разных браузерах), поэтому мне придется также увеличивать ширину области просмотра во флэш-памяти, что усложнит сценарий, а также события, связанные с мышью и т. Д.

  2. Я не очень хорошо знаю, КАК.

Код: (я использую jQuery здесь, потому что он также используется где-то еще на странице, предыдущий макет использовал обычный JS)

    function viewport()
    {
        var e = window
        , a = 'inner';
        if ( !( 'innerWidth' in window ) )
        {
        a = 'client';
        e = document.documentElement || document.body;
        }
        return e[ a+'Width' ];
    }

    puszka = document.getElementById("puszka");

    $().mousemove(function(e)
    {
        var x = e.pageX || e.clientX + document.body.scrollLeft;
        var frame = Math.floor(x * 100 / viewport());
        puszka.transformCan(frame);
    });

1 Ответ

2 голосов
/ 25 января 2012

Actionscript способен распознавать события мыши, такие как перемещение, щелчок и т. Д. Поэтому я предполагаю, что Firefox передает Ответственность флеш-объекту, когда дело доходит до области, где флеш является хозяином всего.

Управлять движением мыши в AS не сложно. Если вы знаете Javascript, вы также можете эффективно кодировать Actionscript, используя предоставленную документацию.

Если я правильно помню, вам нужно только добавить сцену к слушателю:

stageObj.addEventListener(MouseEvent.MOUSE_MOVE, yourFunction);

, а затем "yourfunction" будет обработчиком, который может вызывать вашу функцию javascript через "ExternalInterface".

...