`

JavaScript与Flash的通信

阅读更多

下面是一些在Flash和使用javascript的HTML文件直接通信的示例,每个示例都有简略的步骤

  本文讨论了3种基本的Flash/javascript通信方式:
  > javascript 到 Flash的通信----使用Flash播放器的javascript方法
  > Flash 到 javascript的通信----使用Flash的fscommand
  > Flash 到 Flash的通信-----------使用本地连接对象或综合上2种技术

  并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览器必须有内置的钩子以便Flash播放器可以'监听'.浏览器必须是下列的几种:
  > Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高
  (Windows 95/98/NT/2000/XP 或 MacOS; 允许Java和LiveConnect)
  >Internet Explorer 3.0 或更高
  (仅Windows 95/98/NT/2000/XP; 允许ActiveX)

  注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持这种方法.请查看本文的附加信息


  javascript到Flash的通信
  这个例子演示了如何使用Flash的method把变量从HTML的input text 发送到该页面中的Flash文件中.HTML input的数据通过Flash的SetVariable方法传送到Flash文件中.

  查看示例:示例 下载源文件:http://www.pconline.com.cn/pcedu/sj/wz/flash/0402/acc/040204flashjs.zip(17k) 

  步骤:
  >Flash中
  1.新建一个文件,保存为javascript_to_flash.fla
  2.用文字工具在舞台上创建一个文本域
  3.选择这个文本域,在属性面板中,从下拉列表中选择动态文本(Dynamic Text),在变量(variable)栏填上"myVar"
  注意:最好的习惯是使用Instance,用myVar.text更改myVar的值.为了简单起见和兼容Flash4和Flash5,我们使用的是变量名的形式.
  4.保存文件
  5.发布HTML文件和SWF文件


  >Dreamweaver中
  下一步的工作转移到Dreamweaver中了,当然也可以是其他的HTML编辑器
  1.打开上一步发布的HTML文件
  2.插入生成的SWF文件和OBJECT/EMBED标签
  (1) Insert>Media>Flash,并选择这个Flash
  (2) 切换到代码视图,我们需要修改被选中的<OBJECT>和<EMBED>标签
  (3) 在OBJECT标签中,插入id="myFlash"
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
width=366 height=142 id="myFlash"> 

  注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入
  (4) 在EMBED标签中,插入name="myFlash"和swLiveConnect="true",确保没有使用id属性!代码应当是这样子的:
   <embed src="javascript_to_flash.swf" quality=high width=366 height=142
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com 
/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"; 
name="myFlash" swLiveConnect="true"> </embed>  


  3.创建表单域
  (1) 回到设计视图
  (2) 插入文本域(Insert> Form Object> Text Field),如果询问是否添加表单域,选择是
  (3) 把文本域的HTML标签修改成这样:
  <input type="text" name="sendText" maxlength="45" onChange="doPassVar(this)"> 

  每当文本域内容发生变化时,onChange就被触发,doPassVar()函数就被调用

  4.创建传递变量值的javascript函数
  复制下面的javascript到<head></head>标签内

<SCRIPT LANGUAGE=javascript>
<!--
function doPassVar(args){
var sendText = args.value;
window.document.myFlash.SetVariable("myVar", sendText);}
//-->
</SCRIPT> 

  5.保存文件,测试一下(F12)

  Flash到javascript的通信
  从HTML可以发送数据到Flash,反过来也可以. 这个例子演示了如何应用Flash的Fscommand来发送数据到javascript.
  查看示例:示例2 下载源文件: http://www.pconline.com.cn/pcedu/sj/wz/flash/0402/acc/flash_to_javascript.zip(10K) 

  简要步骤:
  >Flash中
  新建一个文件,保存为flash_to_javascript.fla
  创建一个文本域,设置成输入文本(Input Text),选择"border"以便我们能看到他,指定他的变量为inputVar
  创建一个按钮,在按钮上添加如下的as:
on (release) { fscommand ("send_var", inputVar);}

  保存文件,导出HTML和SWF

  >Dreamweaver中
  1.打开导出HTML文件,修改<OBJECT>和<EMBED>标签,结果同上:
   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macromedia.com 
/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width=366
height=142 id="myFlash"> <embed src="javascript_to_flash.swf" quality=high
width=366 height=142 type="application/x-shockwave-flash" 
pluginspage="http://www.macromedia.com 
/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"; 
name="myFlash" swLiveConnect="true"> </embed>  

  2. 插入如下的javascript到<Body>标签内:

<SCRIPT LANGUAGE=javascript>
<!--
var InternetExplorer= navigator.appName.indexOf("Microsoft") != -1;
function myFlash_DoFSCommand(command, args)
{ 
var myFlashObj = InternetExplorer ? myFlash : document.myFlash; alert (args);
}
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) 
{ 
document.write('<SCRIPT LANGUAGE=VBScript\> \n'); 
document.write('on error resume next \n'); 
document.write('Sub myFlash_FSCommand(ByVal command, ByVal args)\n'); 
document.write(' call myFlash_DoFSCommand(command, args)\n'); 
document.write('end sub\n'); document.write('</SCRIPT\> \n');
} 
//-->
</SCRIPT>  


  3.保存,预览

  Flash和Flash的通信

  通过上面两种方法的混和使用,同一HTML中两个或者更多的Flash直接可以相互传送消息. 从一个flash使用fscommand传送消息给javascript,使用Flash的javascript methods把消息传给另外一个flash

  详细的看这里:Flash影片之间的通信示例
  http://www.macromedia.com /support/flash/ts/document./flash_to_flash_comm.htm

  从Flash MX开始,local connection对象可以用来在flash之间传送消息. 这使得同一HTML中的或者位于两个浏览器窗口中的两个flash影片可以相互发送消息,而不必使用javascript或者fscommand
详细的看这里:在Flash MX中使用local connection对象

  附可控制Flash Player的javascript方法:

  一览表:

Play() -------------------------------------------------------- 播放动画 
StopPlay()--------------------------------------------------- 停止动画 
IsPlaying()--------------------------------------------------- 动画是否正在播放
GotoFrame(frame_number)---------------------------- 跳转到某帧 
TotalFrames()---------------------------------------------- 获取动画总帧数 
CurrentFrame()-------------------------------------------- 回传当前动画所在帧数-1 
Rewind()---------------------------------------------------- 使动画返回第一帧 
SetZoomRect(left,top,right,buttom)--------------- 放大指定区域 
Zoom(percent)-------------------------------------------- 改变动画大小 
Pan(x_position,y_position,unit)----------------------- 使动画在x,y方向上平移 
PercentLoaded()------------------------------------------ 返回动画被载入的百分比 
LoadMovie(level_number,path)----------------------- 加载动画 
TGotoFrame(movie_clip,frame_number)----------- movie_clip跳转到指定帧数 
TGotoLabel(movie_clip,label_name)----------------- movie_clip跳转到指定标签 
TCurrentFrame(movie_clip)----------------------------- 回传movie_clip当前帧-1 
TCurrentLabel(movie_clip)------------------------------ 回传movie_clip当前标签 
TPlay(movie_clip)------------------------------------------ 播放movie_clip 
TStopPlay(movie_clip)----------------------------------- 停止movie_clip的播放 
GetVariable(variable_name)---------------------------- 获取变量 
SetVariable(variable_name,value)--------------------- 变量赋值 
TCallFrame(movie_clip,frame_number)-------------- call指定帧上的action 
TCallLabel(movie_clip,label)----------------------------- call指定标签上的action 
TGetProperty(movie_clip,property)------------------ 获取movie_clip的指定属性 
TSetProperty(movie_clip,property,number)------- 设置movie_clip的指定属性

分享到:
评论

相关推荐

    javascript与flash通信

    javascript与flash通信例子

    JavaScript和Flash的通信(转)

    #### 一、JavaScript与Flash通信方式概述 根据提供的文件描述,我们可以总结出三种主要的通信方式: 1. **从JavaScript到Flash**:这种方式是通过调用Flash对象的方法来实现的。 2. **从Flash到JavaScript**:这种...

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

    当需要将这两者结合,实现Flash与JavaScript之间的通信时,就显得尤为重要。下面我们将深入探讨这一主题,并通过提供的源码来理解其实现方式。 一、Flash与JavaScript通信的原理 Flash和JavaScript之间的通信主要...

    javascript_to_flash_as3.0.rar

    5. **优化技巧**:为了提高性能,应该避免频繁的JavaScript与Flash通信。可以考虑批量处理数据,或者使用缓存机制减少不必要的通信。 6. **调试与错误处理**:在开发过程中,使用Flash的调试版本和浏览器的开发者...

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

    3. **Flash 发布设置**: 为了使 Flash 能够与 JavaScript 通信,需要在 Flash 的发布设置中启用 "Allow Script Access",并指定访问类型,如 "always" 或 "sameDomain"。 **JavaScript 调用 Flash 示例** ```html ...

    JavaScript和Flash的通信.rar_javascript

    1. **外部接口(External Interface)**:Flash Player提供了一个名为`ExternalInterface`的API,允许Flash内容与宿主环境(通常是网页)中的JavaScript进行通信。JavaScript可以通过这个接口调用Flash中的公开方法...

    js载入flash

    2. **启用JavaScript与Flash通信** 在Flash中,我们需要开启ExternalInterface的允许通信。在AS3中,这可以通过以下代码完成: ```actionscript import flash.external.ExternalInterface; ExternalInterface....

    flash和JavaScript通信

    Flash对象可以通过ActionScript 3(AS3)与JavaScript交互。在AS3中,我们可以使用`ExternalInterface`类来调用JavaScript函数。例如,当Flash中的某个事件触发时,我们可以使用`ExternalInterface.call()`方法将...

    javascript与flash相互调用

    1. **ExternalInterface API**:这是Flash Player提供的一种接口,使得ActionScript(Flash的编程语言)能够与网页中的JavaScript进行通信。通过ExternalInterface.addCallback方法,Flash对象可以注册一个函数,使...

    股票线图flash小例子股票线图flash小例子

    "amstock.html"可能是包含Flash对象的HTML文件,通过JavaScript与Flash通信,实现更高级的功能。 8. **文档资源**:压缩包中的"changelog.txt"记录了版本更新的历史;"licence.txt"包含了软件的许可协议信息;...

    Javascript与Flash中的Socket交互

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

    Javascript与flash交互通信基础教程

    本教程将介绍Flash与JavaScript交互通信的三种基础方式:从JavaScript到Flash的通信、从Flash到JavaScript的通信以及Flash之间的通信。 首先,需要了解能够实现这些通信技术的浏览器环境。并不是所有浏览器都支持...

    8格式flash图片滑动

    - **JavaScript与Flash通信**:如果涉及JS交互,需要了解ExternalInterface API,它是Flash与JavaScript之间的桥梁,允许在两者之间传递数据和调用方法。 - **响应式设计**:考虑到现代网页对多设备兼容性的需求,...

    ★★★同时支持iexplorer和firefox的javascript复制拷贝信息到剪贴板方法

    2. JavaScript与Flash通信:使用`window.clipboardData`对象(IE)或`navigator.clipboard` API(Firefox和其他现代浏览器)获取要复制的文本。然后,通过`ExternalInterface`(Flash对象提供的API)调用Flash对象的...

    一个flash和javascript通信的例子

    标题 "一个Flash和JavaScript通信的例子" 涉及的核心技术是Flash与JavaScript之间的交互,也称为Flash External Interface(简称FEI)或者ActionScript JavaScript Bridge(AS3 JSBridge)。这种技术允许网页中的...

    javascript_to_flash.zip

    这是JavaScript到Flash通信的基础。 3. **JavaScript调用Flash** - 使用`ExternalInterface.addCallback`方法,Flash对象可以注册一个函数,使得JavaScript能够调用这个函数。 - JavaScript通过Flash对象的`call`...

    php html5 flash 上传

    前端JavaScript与Flash通信,通过Flash提供的接口获取上传进度,并更新页面上的进度条(如btn.gif所示,可能是一个加载图标或进度条样式)。 总结来说,这个项目可能是一个结合了PHP后端处理、HTML5前端交互和Flash...

    c#与flash通信

    在C#环境下,我们可以使用JavaScript桥接来实现与Flash的通信,因为Flash Player可以通过JavaScript与网页的DOM(文档对象模型)进行交互。但如果是桌面应用程序,如使用C#的Windows Forms或WPF,那么通信方式会有所...

    flash与javascript通信

    大家注意flash的版本号,本人的实例是在flash8.0,actionscrip2.0环境里编译的。以及flash菜单栏里“编辑/首先参数/actionscrip/语言:actionscrip2.0设置。进入进行设置,主要是引入类库的路径的设置,还有就是看看...

Global site tag (gtag.js) - Google Analytics