当前位置: 网学 > 编程文档 > 其他类别 > 正文

处理flash和javascript之间的交互

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式

最近做一个应用,flash和javascript之间互有调用。最后一次写点Actionscript也是在flash 7的时候了,因此按照我的想法,只要用fscommand和getUrl("javasciprt:.")这种形式,flash和javascript之间互相调用应该不是什么大问题。 


没多久就开始觉着自己落后了,Flash 8早已经新增了ExternalInterface API专门处理flash与外部应用的交互,只要浏览器装有flash player,支持的范围应是更广。


ExternalInterface class能够运行的环境

Internet Explorer for Windows (5.0 and later)

Firefox 1.0 and later

Mozilla 1.7.5 and later

Netscape 8.0 and later

Safari 1.3 and later.

使用心得

ExternalInterface class仅仅只有两个方法:


addCallback(methodName:String, instance:Object, method:Function) : Boolean

Registers an ActionScript method as callable from the container.

call(methodName:String, [parameter1:Object]) : Object

Calls a function exposed by the Flash Player container, passing 0 or more arguments.

这两个方法的使用在手册有详细说明,使用范例可以从flash的安装路径例如C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\ExternalAPI下面找到,没太大悬念。


碰到的问题

在IE浏览器下,将flash对象放在form标签之间,ExternalInterface class就会给你报javascript错,而firefox下完全正常,这简直是让人很郁闷的事情,折腾了一天才找到问题原因,可能是IE的Bug吧,这个在livedoc上有人反映过类似的问题。见下面的url:

http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002200.html


有人提出这样的解决办法,将下面这段javascript放在html里的flash之前:

 

这样就可以一定程度上解决ExternalInterface在form标签之间会报错的问题,是asp.net开发者的福音。


原理

下面是浏览器载入一个包含ExternalInterface调用的flash之后,flash player可能会用到的方法

 


function __flash__arrayToXML(obj) {

var s = "";

for (var i=0; i

s += "" + __flash__toXML(obj[i]) + "";

}

return s+"";

}

function __flash__argumentsToXML(obj,index) {

var s = "";

for (var i=index; i

s += __flash__toXML(obj[i]);

}

return s+"";

}

function __flash__objectToXML(obj) {

var s = "";

}

function __flash__escapeXML(s) {

return s.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/’/g, "'");

}

function __flash__toXML(value) {

var type = typeof(value);

if (type == "string") {

return "" + __flash__escapeXML(value) + "";

} else if (type == "undefined") {

return "";

} else if (type == "number") {

return "" + value + "";

}

可以认为现在的ExternalInterface Class仅仅只是可用而已,不够成熟
 

  • 上一篇资讯: flash接收参数
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号