理想情况/设置: 包含 1 部 Flash 电影和包含几个超链接的单独 div 的页面。 这些超链接每个都有一个唯一的类名,如下所示: 复制代码
<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.
最佳答案
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");
....但值得注意的是,我对 Flash 不够熟悉,不知道第二个示例是否可行。
关于javascript - 通过 Flash 控制 Javascript > CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2665714/