2010-04-19 52 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?