2012-01-25 165 views
1

我正在使用Javascript的鼠标事件将鼠标位置信息传递给Flash,并根据鼠标位置显示特定的动画帧。鼠标闪烁时,Javascript mousemove事件不会触发

问题是,当鼠标在Flash对象上时,它不再触发JavaScript事件。我在Chrome上测试过它,它似乎在工作,但Firefox不想合作。

我的Flash对象位于网站的中间并具有透明背景。它必须保持这种方式。另外,我宁愿不动的动作对ActionScript有两个原因:

  1. 网站的宽度不是恒定的(例如不同的浏览器),所以我不得不推视口的宽度设置为闪光过,这会使脚本复杂化,也会使鼠标事件变得复杂。

  2. 我不太了解AS。

代码:(我在这里使用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); 
    }); 

回答

2

ActionScript是能够认识到像移动的鼠标事件,点击等。 因此,我认为Firefox将责任传递给闪存对象,当它涉及闪存是所有主人的区域时。

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

如果我没有记错,你只需要在舞台添加到听众:

stageObj.addEventListener(MouseEvent.MOUSE_MOVE, yourFunction); 

,然后有“yourFunction中”是处理程序,它能够通过“ExternalInterface的”打电话给你的JavaScript函数。

+0

问题是,我必须知道文档中flash的相对位置才能正确计算帧。 – d4rky

+1

然后通过调用javascript函数捕获X和Y的位置 – Stefan

+0

是的,我可能会坚持下去,谢谢:) – d4rky

相关问题