当鼠标闪过时,Javascript mousemove事件不会触发

时间:2012-01-25 12:45:26

标签: javascript jquery flash actionscript mouse

我正在使用Javascript的鼠标事件将有关鼠标位置的信息传递给flash,并根据鼠标位置显示特定的动画帧。

问题是,当鼠标悬停在flash对象上时,它不再触发javascript事件。我在Chrome上测试了它,它似乎正在运行,但Firefox不想合作。

我的Flash对象位于网站中间,背景透明。它必须保持这种方式。此外,我不想将操作移动到ActionScript有两个原因:

  1. 网站的宽度不是常数(例如不同的浏览器),所以我也必须将视口的宽度推到闪存上,这会使脚本复杂化,也会导致鼠标中心事件等。

  2. 我不太了解AS。

  3. 代码:(我在这里使用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 个答案:

答案 0 :(得分:2)

Actionscript能够识别移动,点击等鼠标事件。 因此,我认为Firefox在闪存是所有闪存对象的区域时将责任传递给flash对象。

在AS中处理鼠标移动并不困难。如果你知道Javascript,你也可以使用提供的文档有效地编写Actionscript。

如果我没记错的话,你只需将舞台添加到听众:

stageObj.addEventListener(MouseEvent.MOUSE_MOVE, yourFunction);

然后让“yourfunction”成为能够通过“ExternalInterface”调用你的javascript函数的处理程序。