2010-01-18 31 views
0

这是我们的目标:在一个网站上,在Flash中展示一个漂亮的“àla”iPhone菜单,当我们点击菜单时,在Flash菜单下显示一部分网站。Flash中是否可以在包含Flash对象本身的页面中启动JavaScript函数(使用AJAX)?

两个选项:

  1. 创建具有一个iFrame和 与Flash的 的Flash菜单的页面时,在 的iFrame打开菜单;
  2. 使用Flash创建一个页面,其底部有一个div ,启动一个 JavaScript(如果您有任何更好的想法,请告诉我!)函数,通过AJAX下载所需的菜单。

我的#1的目标是只有一个页面。理想情况下,它会嵌入Flash对象并启动JavaScript函数。

PS:我讨厌iFrames。 iFrames对我来说是邪恶的

不要犹豫,纠正我的问题,使其适当的英语!

感谢,

奥利维尔

回答

2

是,Flash文档中使用ExternalInterface这是很有可能的。该链接解释了整个过程。

一个更大的问题是,它听起来像你用Flash来复制iPhone动画,我想(除非你正在做“翻转”动画),它可以很容易地与正常的JavaScript动画,可能与一个库如jQueryMooTools,以帮助标准化浏览器差异。您甚至可以在Safari 4中执行3D动画。

0

有时仍然有用的旧方法是getURL方法。差异的好书写在这里:http://www.psyked.co.uk/actionscript/actionscript-geturl-vs-externalinterface-when-why.htm。一般而言,ExternalInterface是首选,但有时您希望使用未定义的函数与页面交互。

用法:

getURL("javascript:myFunction(arguments);"); 

正如道格说,你可以使用JS库重新iPhone的动画。如果这是一个问题,这将会为您的菜单带来额外的好处。

0

Doug的建议的替代方法是旧的'fscommand()'函数。在你的Flash代码中,你把“fscommand('name','value');”用您想要发布到网页的任何信息替换名称和值。

在网页上,你需要有一个JavaScript函数,它会监听Flash对象的“FSCommand的”事件,就像这样(IE样品,看到其他浏览器的文档):

function OnFSCommand(name, value) 
{ 
    // whatever you need to do with name & value 
} 

var swf = document.getElementById(name-of-my-Flash-object); 
swf.attachEvent("FSCommand", OnFSCommand); // IE-only - see docs for other browsers