`
lovnet
  • 浏览: 6878711 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Javascript与flash交互通信控制的方法

阅读更多

原文地址: www.macromedia.com/support/flash/ts/documents/java_script_comm.htm
说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威

下面是一些在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)


Javascript到Flash的通信

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

查看示例:示例
下载源文件: javascript_to_flash.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
下载源文件: 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>


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

详细的看这里:Flash影片之间的通信示例

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

本站的localConnection教程:http://www.blueidea.com/tech/multimedia/2003/739.asp

附可控制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的指定属性

flash与javascript交互演示:http://www.v-ec.com/dh20156/code/jsflash/fj.htm

javascript与flash交互演示:http://www.v-ec.com/dh20156/code/jsflash/jf.htm

http://www.w3cgroup.com/article.asp?id=23

分享到:
评论

相关推荐

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

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

    JavaScript和Flash的通信(转)

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

    Javascript与flash交互通信基础教程

    在进行Web开发时,我们经常会遇到需要在Flash内容与JavaScript之间进行交互通信的场景。Flash动画可以增添网页的互动性和视觉效果,而JavaScript则能为页面添加更多的动态行为和逻辑控制。通过它们之间的交互通信,...

    Javascript与Flash中的Socket交互

    在 Flash 中,Socket 类提供了与服务器进行双向数据流通信的能力,而 JavaScript 则可以用来控制 Flash 对象并处理用户交互。本文将详细讲解如何在 Flash 和 JavaScript 之间实现 Socket 通信。 首先,我们需要理解...

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

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

    JavaScript和Flash的通信.rar_javascript

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

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

    4. **实现原理**:C#与Flash交互通常通过ActionScript(Flash的编程语言)和.NET Framework的通信接口实现。可以使用Flash Player的外部接口(ExternalInterface)API,它允许ActionScript调用JavaScript,进而调用...

    Qt和flash交互

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

    Flash与C#交互

    在IT领域,Flash和C#的交互是一种常见的技术实践,特别是在构建富...总之,Flash与C#的交互技术是多样的,开发者可以根据项目需求选择合适的方法。理解这些技术原理和实践技巧,有助于提升RIA的用户体验和功能实现。

    flex和javascript交互例子

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

    c#winform和flash交互

    首先,理解WinForms和Flash交互的基本原理至关重要。Flash可以通过ActionScript提供对外部接口(External Interface)的支持,允许与宿主环境(如WinForms)进行通信。在C#中,我们可以利用AS3的`ExternalInterface....

    MFC程序与FLASH交互

    MFC程序与FLASH的交互是指在MFC应用程序中嵌入并控制Adobe Flash内容,实现两者之间的通信和数据交换。这样的技术可以使得桌面应用程序具有更丰富的图形表现力和动态效果,提升用户体验。 首先,我们要理解MFC程序...

    VB和flash交互

    3. **外部接口(External Interface)**:Flash Player 8及更高版本提供了外部接口功能,允许Flash与宿主环境(如VB)进行JavaScript级别的通信。在VB中,可以通过WebBrowser控件或自定义的ActiveX组件来接收和发送...

    javascript与flash相互调用

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

    flash和JavaScript通信

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

    Flex与JS交互

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

    FLASH与ASP交互实例

    通过分析`lv_shiyan.fla`中的ActionScript,我们可以看到如何使用`ExternalInterface`类与JavaScript通信,而JavaScript再与ASP页面进行Ajax交互。`lv_shiyan.html`中会设置`allowScriptAccess`属性,允许Flash与...

    C++ ATL控件与JavaScript交互

    本示例“C++ ATL控件与JavaScript交互”旨在展示如何通过ActiveX控件实现在浏览器中与JavaScript进行通信,以实现如文件上传进度条这样的高级功能。ActiveX控件是基于COM的,可以在Internet Explorer等支持ActiveX的...

    flex 与 flash 交互

    9. **调试和测试**: 在实现Flex与Flash交互的过程中,调试和测试是必不可少的环节。使用Flash的调试版本和Flex的模拟器可以帮助定位和解决问题。 10. **安全注意事项**: 跨域问题和安全策略是需要注意的重要事项。...

Global site tag (gtag.js) - Google Analytics