JavaScript和Flash的通信

javascript

说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威

  下面是一些在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文件中.

  查看示例:示例 下载源文件(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="http://www.pushad.com/Info/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()函数就被调用

  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 下载源文件: 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="http://www.pushad.com/Info/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的指定属性

  详细资料

 

时间: 2024-10-31 13:23:52

JavaScript和Flash的通信的相关文章

JavaScript 和 Flash 的通信

javascript <embed src="http://www.webjx.com/htmldata/2005-04-09/javascript_to_flash.swf" quality=highwidth=366 height=142type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P

JavaScript与Flash的通信

当Flash置于HTML容器中时,经常会遇到AS与JS的通信问题,例如:JS能否调用AS中的变量.方法,AS能否调用JS中的变量.方法等等.答案是肯定的.随着技术的不断发展,解决方案也是多种多样的. 在我总结的HTML与FLASH之间的"静态"传值一文中提到了JS使用SetVariable方法来设置FLASH中的变量,认为此法已经过时.对此我表示同意,但上文重点毕竟不是在讨论JS与AS的通信,因此另外对AS与JS通信做一个个人总结,欢迎大家讨论. 实现JS跟AS的通信,目前可选方法比较

关于 JavaScript 和 Flash 间的通信

javascript 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术 前言.JavaScript和Macromedia Flash的通信示例 原文地址: http://www.macromedia.com/supp

Javascript与flash交互通信基础教程_javascript技巧

下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信----使用Flash播放器的javascript方法 Flash 到 Javascript的通信----使用Flash的fscommand Flash 到 Flash的通信----------使用本地连接对象或综合上2种技术 并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览

JavaScript与Flash 8.0通信之打印实战篇

javascript|打印 在发贴之前,我希望大家能给我提出宝贵的意见和建议,如有不对的地方,情给予指出: 同时我要感谢闪吧.Action Script讨论区的所以版主以及supertomato.因为这里有许多默默无闻的人为大家提供无偿的帮助,我在次作一点小小的贡献,希望能给大家带来一点小小的收获.谢谢! 最近为银行作一个凭证打印,应用到了javaScript与flash 8.0的通讯,所以我将这段代码贴出来.起初计划纯粹用javascrip作打印,后来想到要更好的升级(原因就不说啦),所以就用

网页页面中如何用Javascript调用Flash动画?

flash动画|javascript|网页|页面 问:网页页面中如何用Javascript调用Flash动画? 答: 在<HEADE>区加入  程序代码 <script src="js/flash.js" type="text/javascript"></script> 在调用FLASH处加入  程序代码 <script language="JavaScript" type="text/java

javascript检测flash插件是否被禁用的方法_javascript技巧

本文实例讲述了javascript检测flash插件是否被禁用的方法.分享给大家供大家参考,具体如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus"> <meta name="Author&

javascript获取flash版本号的方法_javascript技巧

本文实例讲述了javascript获取flash版本号的方法.分享给大家供大家参考.具体分析如下: 下面我们来介绍两个js函数判断用户是否安装了flash,如果安装了flash再来获取 flash版本号并且给出提示. 例1 获取各浏览器的版本号,如需获取具体版本号数字 复制代码 代码如下: function flashChecker() {     var hasFlash = 0; //是否安装了flash     var flashVersion = 0; //flash版本     var

用 JavaScript 控制 Flash 播放器的方法汇总

javascript|控制 说明:含例句的方法我已作了测试. 播放动画:Play() 例:(网页中的 Flash id).Play(); 停止动画:StopPlay() 动画是否正在播放:IsPlaying() 跳转到某帧:GotoFrame(frame_number) 获取动画总帧数:TotalFrames() 回传当前动画所在帧数:CurrentFrame() 使动画返回第一帧:Rewind() 放大指定区域:SetZoomRect(left,top,right,buttom) 改变动画大小