2012-01-25 108 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

相關問題