javascript - 通过 Flash 控制 Javascript > CSS

标签 javascript css flash

理想情况/设置: 包含 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/

相关文章:

javascript - 拆分链接并插入到表单中

Javascript 完整类型列表说明?

javascript - 流沙字体无法正确呈现

javascript - 更改 DIV 的 CSS 和内容

html - 具有 "display: none"的元素仍然可见

apache-flex - 在ActionScript和Flex中计算文本宽度

javascript - 最小 Material 表演示 ID 列未渲染?

javascript - 选择下拉列表时生成更多 MYSQL 数据库结果

flash - ActionScript 3.0加载和播放多种声音

flash - 如何在 flash 中将线型设置为实线/虚线/点状/参差不齐/点状?