【问题标题】:Control Javascript > CSS through Flash通过 Flash 控制 Javascript > CSS
【发布时间】:2010-04-19 07:09:35
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 SO。究竟是什么工作不顺利?您是否尝试过backgroundColor 而不是background?将setClass 函数包装在$() 中的任何具体原因?
  • 感谢 Pekka 的回复。什么不起作用是当我转到 Flash 中的特定帧时它什么也不做。我也改变了背景颜色,但仍然没有。没有特别的理由将 setClass 包装在 $() 中,因此我已将其删除并再次对其进行测试,但没有结果。如果需要,我可以使文件/html 可用吗?

标签: javascript css flash


【解决方案1】:

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 不够熟悉,无法知道第二个示例是否可行。

【讨论】:

  • 感谢 Graza 的解释。我已经尝试了这些建议,但我感觉我只是没有正确地做某事。我已经在这里提供了基本文件mediafire.com/?yigmfed0mig 希望问题很简单:)
  • 该文件/站点似乎是“私有的”。您可能需要更改该链接,因为该链接不起作用 - 然后在不同的浏览器中对其进行测试,以确保您在未实际登录时可以访问它(在这种情况下,其他人将能够看到它)。我不确定 是否可以提供更多帮助 - 如前所述,我对 Flash 不太熟悉,但希望其他人可以帮助您...
  • 嗨 Graza,该链接现在应该可用 - mediafire.com/?yigmfed0mig 如果您可以查看 JS 和 html,那就太好了,因为我认为问题更多在于 JS 本身?
  • 很难快速解释该 javascript,因为它都在一行中 - 如果它具有人类可读的格式(换行符、制表符)对我(或任何其他想要提供帮助的人)来说会容易得多等)。
  • 你的意思是rar文件中的html?我又上传了一次,这次是utf-8格式(我用notepad++)mediafire.com/?2yt2m3jleux
【解决方案2】:

您是否使用 ExternalInterface.available 测试了 ExternalInterface 的可用性?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多