2010-04-19 53 views
2

理想的情況/設置: 一個頁面包含1個Flash影片和一個單獨的div包含幾個超鏈接。 每個這些超鏈接有一個獨特的類名像這樣: 複製代碼控制JavaScript> CSS通過Flash

<ul> 
    <li><a href="" class="randomname1"></a></li> 
    <li><a href="" class="randomname2"></a></li> 
    <li><a href="" class="randomname3"></a></li> 
    <li><a href="" class="randomname4"></a></li> 
    </ul> 

Flash影片本身將包含4個按鈕。 點擊這些按鈕之一應該使Flash與Jquery/JS通信,並告訴它突出顯示特定的類名。

想法而已

對於JavaScript的,它看起來像

$(function() { 
function setClass(className) {$("."+className).css("background","red");} 
}); 

而在Flash中特定關鍵幀

1. button 1 
    ExternalInterface.call("setClass","randomname1"); 

    1. button 2 
    ExternalInterface.call("setClass","randomname2"); 

    1. button 3 
    ExternalInterface.call("setClass","randomname3"); 

    1. button 4 
    ExternalInterface.call("setClass","randomname4"); 

的問題是,它是不是真的很好,我是不知道我是否正在使Flash與JS通信。

任何想法或提示引導我在正確的方向嗎? 預先感謝您

J.

+1

歡迎來到SO。什麼工作不好?你嘗試過'backgroundColor'而不是'background'嗎?爲什麼你要在'$()'中包裝'setClass'函數? – 2010-04-19 07:12:32

+0

謝謝Pekka的回覆。 什麼不起作用的是,當我轉到Flash中的特定幀時,它什麼都不做。 我已經改變了backgroundColor,但仍然沒有。 將setClass包裝在$()中沒有特別的理由,所以我已經刪除它並再次測試它,但沒有結果。 如果需要,我可以使文件/ html可用? – 2010-04-19 13:52:16

回答

0

setClass方法不會對Flash代碼可見 - 作爲方法封裝在$(document).ready()關閉

內(如果你想知道,你$(function()...通話僅僅是速記$(document).ready(function()...

你需要將該方法附加到窗口對象或某個其他全局可訪問的對象以供Flash查看。例如:

$(function() { 
    window.setClass = function(className) {$("."+className).css("background","red");} 
}); 

這是最簡單的方法。

...或停止窗口命名空間的污染:

$(function() { 
    var ns = window.myNamespace = {}; 
    ns.setClass = function(className) {$("."+className).css("background","red");} 
}); 

....然後在Flash:

ExternalInterface.call("myNamespace.setClass","randomname1"); 

....值得注意的不過是我不熟悉用閃光燈足以知道第二個例子是否可行。

+0

謝謝格拉扎的解釋。我已經嘗試過這些建議,我有一種感覺,我只是沒有正確地做某件事。 我已經在這裏提供的基礎文件 http://www.mediafire.com/?yigmfed0mig 希望問題是非常簡單:) – 2010-04-19 17:44:53

+0

該文件/網站似乎是「私人」。如果鏈接不工作,您可能需要更改該鏈接 - 然後在其他瀏覽器中對其進行測試,以確保在您未實際登錄時可以訪問它(在這種情況下,其他人將能夠看到它)。我不確定*我*可以提供更多的幫助 - 如前所述,我不熟悉Flash,但希望別人能幫助你... – Graza 2010-04-20 12:54:24

+0

嗨Graza, 鏈接應該現在可用 - http://www.mediafire.com/?yigmfed0mig 如果你可以看看JS和html,那會很棒,因爲我認爲問題更多的是JS本身。 – 2010-04-20 13:49:42

0

你有測試ExternalInterface的可用性ExternalInterface.available?