`
bellstar
  • 浏览: 150884 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript总结(三)js与FLASH的交互

阅读更多

目录
(一)有关框架
(二)文件组织与代码组织
(三)JS与FLASH交互
(四)ajax局部刷新与RPC
  (五)获取设置元素样式与监听元素事件
  (六)页面元素的创建调整与关联
(七)浏览器兼容性问题
(八)WEB软件的前端架构实践

文章中的代码只为表达文章意义,非真正能执行的代码。
JS与FLASH交互
与flash交互遇到的问题
一、由于嵌入标记以及浏览器等原因,导致JS无法调用FLASH中的方法
使用swfobject来嵌入你的FLASH
它的优点有:
  • 简单简洁,再也不那COPY那一大段的标记了
  • 支持指定FLASH版本,如果版本不够可自动升级

二、FLASH调用JS的时候,JS对象还不存在
由于大部分脚本是放到页面最底部的(这样做的原因是让浏览器先渲染出界面,因为载入脚本时会停止渲染页面),所以如果在脚本导入之前就嵌入了FLASH,并且FLASH尝试调用JS方法,此时可能JS对象所在的脚本还未执行。我的做法是把嵌入的FLASH的代码放到所有脚本执行之后。

三、JS调用FLASH的时候,FLASH还未初始化完成
FLASH嵌入到页面中后,根据文件大小 ,下载要一定时间,下载完成后,FLASH还要执行初始化操作,其中就包括初始化暴露给JS调用的方法,在这一切没有做好之前,如果JS尝试与FLASH交互,必然会失败。在做好解决上面的第二个问题之后,解决这个问题的办法就是让FLASH通知JS,说自己已经处于READY状态了。
$flashReadyListeners = {};
//把FLASH初始化完后要执行的JS写在传递给flashReady的参数fn里面。
function flashReady(flashName, fn){
  var listeners = $flashReadyListeners[flashName]
   if(!listeners)listeners=$flashReadyListeners[flashName]=[];
   listeners.push(fn);
}

//flash初始化完成后调用此方法
function flashInit(flashName){
   var listeners = $flashReadyListeners[flashName];
   if(listeners){
    jQuery.each(listeners, function(fn){
      typeof fn == "function" && fn();
   })
   }
}

//example
//在chat.swf载入完成后,调用它jsCall方法
flashReady("chat", function(){
     getFlash("chat").jsCall("speak","hello");
})


四、flash与js相互调用的接口
flash与js要相互调用,要约定好接口方法名,参数个数及意义,一有变化,要改相应代码,FLASH还要重新编译,很是麻烦。目前的做法是:
        先根据需求,讨论好后把接口规范放到WIKI上面。然后通过以下方法路由选择后再调用具体方法。
FLASH代码中的定义
//我不会写FLASH,以下代码不能运行
//js调用FLASH
function jsCall(fnName, args, callback){}
//flash调用JS
function callJs(fnName, args, callback){}


JS代码中的定义
//flash调用JS
function flashCall(fnName, args, callback){
   switch(name){
       case name == "updateStatus":
             app.$currentUser.updateStatus(args, callback);
             break;
        default:
           thrown  fnName + "未定义";
   }
}
//JS调用FLASH
function callFlash(flashName, fnName, args, callback){
   getFlash(flashName).jsCall(fnName, args, callback);
}

参数说明:
@param  fnName {String} 要调用的方法名
@param args {Object} 传递给具体方法的参数HASH,key为字符串
//这样做,你可以给参数定名称,与WIKI对应。然后要增加参数与方便
@param callback {Function} 方法调用后要执行的 回调

目前JS与FLASH的调用,还不算太多,十个左右吧,所以路由实际上用的是IF ELSE 
当然这样做不是很好,具体怎样做,欢迎大家讨论。
分享到:
评论
5 楼 leon.s.kennedy 2013-06-01  
[flash=200,200][url][img][list]
[*]
引用
引用
引用
[u][u][u][u][i][i][b][b][b][b][b][i][u][u][u][i][b]
引用
[/b][/i][/u][/u][/u][/i][/b][/b][/b][/b][/b][/i][/i][/u][/u][/u][/u]
[/list][/img][/url][/flash]
4 楼 ccxw1983 2010-04-03  
不了解 FLASH 怎么做,只知道很多纯浏览器干不来的活这个可以干,相当于activex了吧
3 楼 foodyi 2010-04-02  
ghyghoo8 写道
昨儿弄完一个js与as2交互的东东。
貌似是getURL("javascript:js函数");
还有一个是在该帧引入一个flash类,有两个函数call与addcall,具体忘了~


用getURL会有浏览器不兼容的情况,例如mac下的safari.
2 楼 ghyghoo8 2010-03-31  
昨儿弄完一个js与as2交互的东东。
貌似是getURL("javascript:js函数");
还有一个是在该帧引入一个flash类,有两个函数call与addcall,具体忘了~
1 楼 sogo1986 2010-03-30  
swfobject用的比较多....

相关推荐

    javascript与flash之间的交互(例子)

    JavaScript 可以通过这些对象的属性和方法与 Flash 进行交互,如 `getVariable` 和 `setVariable` 方法。 3. **Flash 发布设置**: 为了使 Flash 能够与 JavaScript 通信,需要在 Flash 的发布设置中启用 "Allow ...

    js和flash交互的小例子

    JS与Flash交互的核心在于ActionScript,Flash中的编程语言。通过ActionScript,我们可以定义Flash对象的行为,并开放接口供JavaScript调用。这种交互方式允许开发者利用Flash的强大图形处理能力,同时利用JS实现更...

    C# 与Flash交互简单示例【源码完美运行】

    3. **C#与Flash交互的必要性**:在某些场景下,例如游戏开发或网页嵌入的复杂交互,需要将Flash的内容与后端逻辑(如C#)结合,实现数据的双向通信,例如用户输入、游戏状态同步等。 4. **实现原理**:C#与Flash...

    Javascript与Flash中的Socket交互

    JavaScript 与 Flash 中的 Socket 交互是网页开发中一种重要的技术,主要用于实现浏览器与服务器之间的低级别通信。在 Flash 中,Socket 类提供了与服务器进行双向数据流通信的能力,而 JavaScript 则可以用来控制 ...

    javascript-flash-js

    JavaScript、Flash和JS这三个术语在IT领域中都占据着重要的地位。它们分别代表了Web开发中的不同技术,各自有着独特的功能和应用场景。 首先,JavaScript是一种轻量级的解释型编程语言,广泛应用于网页和网络应用的...

    Flash与JS交互案例

    本案例“Flash与JS交互案例”展示了如何在网页中使SWF(Flash影片)与JavaScript进行数据交换,从而实现更丰富的用户体验。 首先,让我们了解Flash中的`ExternalInterface` API。这是Adobe Flash Player提供的一种...

    Qt和flash交互

    QWebView可以加载HTML、CSS、JavaScript以及Flash内容,因此它是实现Qt与Flash交互的基础。 1. **集成Flash Player**: 在Qt中使用Flash,需要确保系统已经安装了Flash Player插件。对于Windows平台,通常是NPAPI...

    3d flash交互效果

    总结来说,3D Flash交互效果是通过Adobe Flash工具,结合ActionScript编程,创建出包含3D视觉和互动性的Web内容。这些内容通过FLA源文件设计,SWF文件发布,HTML页面嵌入,图像资源支持,并可能利用JavaScript进行更...

    Flash与C#交互

    1. **Flash External Interface (AS3):** 这是Flash Player提供的一个API,允许ActionScript 3代码(Flash的编程语言)调用JavaScript函数,进而与网页中的C# Web服务或Ajax接口通信。C#服务端可以处理请求并返回...

    JavaScript与ActionScript3交互问题总结

    JavaScript与ActionScript3交互问题总结 在Web开发中,JavaScript是一种广泛使用的客户端脚本语言,而ActionScript3(AS3)则是Adobe Flash平台的核心语言。两者在不同的领域中发挥着重要作用,但有时需要进行交互...

    flex和javascript交互例子

    在Flex中,我们可以使用`ExternalInterface`类来与JavaScript进行交互。`ExternalInterface.addCallback`方法允许我们在JavaScript中调用Flex组件的方法,而`ExternalInterface.call`方法则用于在Flex中调用...

    flash与js交互

    在网页开发中,Flash与JavaScript(JS)的交互是一个常见的需求,特别是在富互联网应用程序(RIA)的场景下。这两种技术的交互使得动态内容和用户互动得以实现,弥补了彼此的不足。本文主要探讨如何实现Flash...

    MFC程序与FLASH交互

    同时,Flash也可以通过ACTIONSCRIPT与MFC程序进行通信,比如通过ExternalInterface接口暴露函数给JavaScript,再由JavaScript调用MFC程序暴露的ActiveX接口。 在实际应用中,可能需要处理的问题包括: 1. 初始化和...

    js.rar_actionscript_flash js_js actionscript_js flash_js交互

    "js.rar_actionscript_flash js_js actionscript_js flash_js交互"这个标题揭示了我们要探讨的主题——如何实现JavaScript与Flash ActionScript之间的交互。 ActionScript是Adobe Flash Professional中的主要编程...

    Flash与JavaScript的通信例子及总结(源码)

    1. 安全性:确保只允许信任的JavaScript代码与Flash交互,以防止跨站脚本攻击(XSS)。 2. 兼容性:检查目标浏览器对Flash的支持程度,因为现代浏览器可能会默认禁用或逐步淘汰Flash。 3. 性能:过多的Flash与...

    FLASH与ASP交互实例

    本实例将详细讲解如何通过Flash与ASP进行交互,以实现更丰富的网页功能。 首先,ASP是一种服务器端脚本语言,由微软开发,用于构建动态网页。它允许开发者在HTML页面中嵌入VBScript或JScript代码,从而在服务器端...

    Flex与JS交互

    Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flash Player或Adobe AIR环境中运行的Flex应用程序与HTML页面中的JavaScript代码进行通信。这种交互性极大地扩展了富互联网应用(RIA)的功能,使得...

    VB和flash交互

    **VB与Flash交互的原理:** 1. **ActiveX控件**:Flash可以嵌入到VB应用程序中作为ActiveX控件,使得VB程序能够控制Flash电影的播放、停止等操作。VB可以通过调用控件的属性和方法来实现对Flash的控制。 2. **...

    javascript与flash相互调用

    "external2.swf"是编译后的Flash文件,而"js_flash.swf"可能是另一个示例,展示了JavaScript与Flash的交互。 6. **安全考虑**:尽管ExternalInterface提供了便利,但也有安全风险。恶意代码可能利用这个接口进行跨...

    flash和js互相访问

    在现代Web开发中,Flash和JavaScript(JS)的交互是一个重要的技术点,特别是在富互联网应用程序(RIA)的场景下。这种交互能力使得开发者能够利用Flash的动画和多媒体处理能力,结合JavaScript的灵活性和浏览器兼容...

Global site tag (gtag.js) - Google Analytics