以下是使用 JavaScript在 Macromedia Flash 和 HTML 文档之间进行通信的多个示例,在这些示例后面的是重新创建每个示例的步骤。

前提条件:

要充分利用以下这些方法的好处,需要具有 JavaScript 的应用知识。这些应用知识并不在本技术说明中介绍,但可以使用许多资源来了解 JavaScript。有关详细信息,请参阅本文档底部的其他信息。有经验的脚本撰写人员应该阅读使用 Flash 撰写脚本 * 这篇文章,以了解可控制 Macromedia Flash Player 的 JavaScript 方法的概述。

本技术说明中讨论了 Flash/JavaScript 通信的三种基本类型:

  • JavaScript 到 Flash 通信 - 使用 Flash Player 的 JavaScript 方法
  • Flash 到 JavaScript 通信 – 使用 Flash 的 fscommand
  • Flash 到 Flash 通信 – 使用本地连接对象或者组合使用以上两种方法

并非所有浏览器都具有浏览器脚本撰写功能。为了与 Flash Player 通信,浏览器必须具有 Flash Player 可以“听”到的内置挂钩程序。浏览器要求列示如下:

  • Netscape Navigator 3.0 - 4.7x 和 Netscape 6.2 或更高版本

    (Windows 95/98/NT/2000/XP 或 MacOS;LiveConnect 和支持 Java 的浏览器)

  • Internet Explorer 3.0 及更高版本

    (仅限于 Windows 95/98/NT/2000/XP;支持 ActiveX 的浏览器)

注:Macintosh 上的 Internet Explorer 以及 Netscape 6 的早期版本不支持此方法。有关详细信息,请参阅本文档底部的其他信息。

JavaScript 到 Flash 通信

此示例演示如何使用 Flash 方法将变量从 HTML 输入文本字段发送至嵌入到同一个 HTML 文档的 Flash 文件。在 HTML 输入字段中输入的日期将使用 Flash 方法 SetVariable 填充 Flash 文件中的文本字段。

查看示例: 示例 1 *

下载源文件:

javascript_to_flash.zip (17K)


要遵从的步骤:

  • 在 Flash 中

    1. 在 Flash 中创建新文件并将其保存为 javascript_to_flash.fla
    2. 使用“文本”工具在舞台上放置一个文本字段。
    3. 选择该文本字段,然后在“属性”面板中,从下拉式菜单选择“动态文本”,然后在变量字段中输入“myVar”。

      注:最佳的编码做法要求使用“实例”字段,这会需要用到 myVar.text。为简单起见以及保持此方法与 Flash 4 和 5 的向后兼容性,我们使用变量字段。

    4. 保存文件。
    5. 选择“只显示 Flash”HTML 模板,使用发布功能从 Flash 发布 HTML 页面和 Flash SWF。将在保存原始 FLA 文件的相同文件夹中创建这两个文件。

    在 Dreamweaver 中

    以下说明特定于 Dreamweaver,但可以使用任何 HTML 编辑器通过相同的方法手动编辑代码。

    1. 打开 Flash 在上面步骤 5 所发布的 HTML 文件。
    2. 插入 Flash 媒体和 OBJECT/EMBED 代码

      1. 选择“插入”>“媒体”>“Flash”,然后选择上面创建的 SWF“javascript_to_flash.swf”。
      2. 选择 Flash 影片占位符。
      3. 使用“视图”>“代码”打开 Dreamweaver 的代码视图。您需要留意的 OBJECT 和 EMBED 标签将突出显示。
      4. OBJECT 标签中,输入值 id="myFlash"(如果此值不存在的话)。还应确保值 name="myFlash" 未出现在代码的第一部分(标签的 OBJECT 主部分)中。

        <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">

        注:如果复制并粘贴到 Dreamweaver 中,请务必删除脚本中可能的多余换行符。否则,可能会产生页面错误。

        注:Netscape 6.2 及更高版本要求删除 object 标签的 name 属性,以允许脚本通信。Dreamweaver 在属性检查器中提供一个字段,此字段会自动写入两个属性,因此需要手动编辑代码以确保标签正确。

      5. 在标签的 EMBED 部分,输入值 name="myFlash"swLiveConnect="true"(如果这些值不存在的话)。确保此部分(EMBED 标签)没有“id”值。

        <embed src="javascript_to_flash.swf" quality=high width=366 height=142type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true"></embed>
        
        </object>  

    3. 在 HTML 中创建表单字段

      1. 使用“视图”>“设计”返回到“设计视图”。
      2. 选择“插入”>“表单对象”>“文本字段”(如果提示添加一个表单标签,请单击“是”)。
      3. 修改文本字段的 HTML 标记,如下所示:<input type="text" name="sendText" maxlength="45" onChange="doPassVar(this)">

        当更改文本字段的内容后,会自动调用 onChange 处理函数。当出现更改时,会调用 doPassVar() 函数(请参阅下一步骤)。

    4. 创建传递值的 Javascript 函数

      将以下 JavaScript 复制并粘贴到 HTML 源代码的 <head> 和 </head> 标签之间:

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

      每当对文本字段进行更改时,会调用此 JavaScript 函数。它使用 Flash JavaScript 方法 SetVariable 将 Flash 影片中的变量 myVar 设置为在 HTML 文本表单字段中输入的值。

    5. 选择“文件”>“保存”。
    6. 在浏览器中使用 F12 测试或预览文件。

Flash 到 JavaScript 通信

除了可将数据从 HTML 页面发送到 Flash 影片外,也可以反过来进行。此示例演示如何使用 Flash 的 fscommand * 动作将字符串从 Flash 发送到 JavaScript 处理函数。出于演示目的,显示了一个 JavaScript 警告框,其中包含从 Flash 发送到浏览器的值。

查看示例: 示例 2 *

下载源文件:

flash_to_javascript.zip (17K)


要遵从的步骤:

  • 在 Flash 中

    1. 在 Flash 中创建新文件并将其保存为 flash_to_javascript.fla
    2. 使用“文本”工具在舞台上放置一个文本字段。
    3. 选择该文本字段,然后在“属性”面板中,从下拉式菜单选择“输入文本”。选择“边框”图标,以便能看到该字段(有关指南,请参阅上面的图示)。
    4. 在变量字段中输入“inputVar”。
    5. 在舞台上添加一个按钮。通过选择“窗口”>“公用库”>“按钮”,可以找到一个示例按钮。
    6. 选择此按钮并打开“动作”面板(“窗口”>“动作”)。
    7. 将以下 fscommand 动作添加到该按钮:

      on (release) {fscommand ("send_var", inputVar);}

    8. 保存文件。
    9. 选择“只显示 Flash”HTML 模板,使用发布功能从 Flash 发布 HTML 页面和 Flash SWF。将在保存原始 FLA 文件的相同文件夹中创建这两个文件。

    在 Dreamweaver 中

    以下说明特定于 Dreamweaver,但可以使用任何 HTML 编辑器通过相同的方法手动编辑代码。

    1. 打开在上面的步骤 9 中使用 Flash 的“发布”命令创建的 HTML 文件。
    2. 插入 Flash 媒体和 OBJECT/EMBED 代码

      1. 选择“插入”>“媒体”>“Flash”,然后选择上面创建的 SWF“javascript_to_flash.swf”。
      2. 选择 Flash 影片占位符。
      3. 使用“视图”>“代码”打开 Dreamweaver 的代码视图。您需要留意的 OBJECT 和 EMBED 标签将突出显示。
      4. 在 OBJECT 标签中,输入值 id="myFlash"(如果此值不存在的话)。还应确保值 name="myFlash" 未出现在代码的第一部分(标签的 OBJECT 主部分)中。

        <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">

        注:如果复制并粘贴到 Dreamweaver 中,请务必删除脚本中可能的多余换行符。否则,可能会产生页面错误。

        注:Netscape 6.2 及更高版本要求删除 object 标签的 name 属性,以允许脚本通信。Dreamweaver 在属性检查器中提供一个字段,此字段会自动写入两个属性,因此需要手动编辑代码以确保标签正确。

      5. 在标签的 EMBED 部分,输入值 name="myFlash"swLiveConnect="true"(如果这些值不存在的话)。确保此部分(EMBED 标签)没有“id”值。

        <embed src="javascript_to_flash.swf" quality=highwidth=366 height=142type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true"></embed> </object>

    3. 创建检索并显示值的 Javascript 函数

      1. 在打开 HTML 文档中的标签后, <script type="text/javascript"> // </script>插入以下代码:

        
        <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>

        执行警告的特定函数以红色突出显示。有关 Javascript 的更多详细信息,请参阅其他信息。

      2. 选择“文件”>“保存”。
      3. 在浏览器中使用 F12 测试或预览文件。

Flash 到 Flash 通信

对于同一个 HTML 文档中的两个或更多 Macromedia Flash 影片,通过将以上讨论的两种方法组合使用,它们可以互相发送消息。使用 fscommand 将消息从 Flash 影片发送到 Web 浏览器,并使用 Flash 的 JavaScript 方法将消息从浏览器发送到 Flash 影片。有关这方面的详细信息,请参阅Flash 影片之间的通信示例(技术说明 15692)*。

从 Macromedia Flash MX 开始,本地连接对象可以用于 Flash 到 Flash 通信。对于同一个 HTML 文档或两个浏览器窗口中的两个 Flash 影片,这可使它们在不使用 JavaScript 或 fscommand 动作的情况下互相发送信息。有关详细信息,请参阅在 Macromedia Flash MX 中使用本地连接对象 *。

其他信息

有关包含通过函数发送 JavaScript 命令的示例的技术文章,请参阅使用 Flash 撰写脚本 *。有关 JavaScript 的详细信息,请访问 Webmonkey.com。

有关 Macintosh 上的 Internet Explorer 的信息,请参考 Macintosh 平台上的 Flash 和 Internet Explorer 问题(技术说明 13638)*。

有关 Netscape 和 Mozilla 支持的信息,请参考 Netscape 6、6.01 和 Mozilla(技术说明 14625)*。

有关哪些浏览器支持不同功能的完整矩阵表,请参阅每种浏览器所支持的特定 Flash 功能的完整列表(技术说明 14159)*。

有关可控制 Macromedia Flash Player 的 JavaScript 方法的概述,请参考使用 Flash 撰写脚本(文章)*。

JavaScript 和 Macromedia Flash 之间的通信示例相关推荐

  1. html多页面之间如何通信,html5中sharedWorker实现多页面通信代码示例

    本篇文章小编给大家分享一下html5中sharedWorker实现多页面通信代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 在没有登录浏览了一 ...

  2. 【完整代码】Scala AKKA实现两个Actor之间的通信代码示例

    启动程序: package com.zxl.akka.two_actorsimport akka.actor.{ActorRef, ActorSystem, Props}//extends App 可 ...

  3. 如何在基于 Silverlight 的本地应用程序之间实现通信

    http://msdn.microsoft.com/zh-cn/library/dd833075(VS.95).aspx 在两个Silverlight应用间数据通信(包括与Flash通信) 如何在基于 ...

  4. flash与javacript通信(1)

    官方文档: ExternalInterface 类是外部 API,在 ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口,例如,含有 JavaScript ...

  5. PHP与FLASH之间的交互

    原文链接:http://www.macromedia.com/devnet/flash/articles/flashmx_php.html 随着flashMX中LoadVars对象的引入,php(包括 ...

  6. 交换机和路由器实现不同网段划分、不同vlan之间的通信、指定组合vlan进行网络通信

    交换机和路由器实现不同网段划分.不同vlan之间的通信.指定组合vlan进行网络通信. 推荐一个画图非常好用的在线免费工具:https://www.processon.com/i/5f58a647e6 ...

  7. FLASH与ASP通信原理入门

    经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了,具 ...

  8. [转]FLASH与ASP通信入门教程

    ★经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法.可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了, ...

  9. 利用qwebchannel实现Python和JS之间进行通信

    要解决前后端交互问题,可以利用qwebchannel实现python和JS之间的通信 文章末尾附有简单的demo 1. 准备阶段 由于我的python使用的是Anaconda,内置了pyqt,因此直接 ...

  10. Linux 进程及进程之间的通信机制——管道

    参考: LInux C编程从初学到精通 电子工业出版社 Linux 进程 Linux 进程简介 Linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一时间使用同一台计算机系统:多用户是指 ...

最新文章

  1. 一个简单HTML鼠标事件问题的衍化历程
  2. 【爬虫】Scrapy爬取腾讯社招信息
  3. 十、深入Java字符串(下篇)
  4. 记 QT 应用开发中的一个二进制兼容性问题
  5. python权重初始值设置_pytorch自定义初始化权重的方法
  6. 计算机原理 信息化教学设计,小学数学信息化教学设计
  7. 【ES9(2018)】for await...of
  8. 【lucene】Lucene 自定义 Parser
  9. security工作笔记003---SpringSecurity框架启动报错.bcrypt.BCryptPasswordEncoder‘ that could not be found.
  10. python手写一个迭代器_搞清楚 Python 的迭代器、可迭代对象、生成器
  11. JavaScript实现动态添加、移除元素或属性的方法分析
  12. [树莓派][GPIO][风扇][断点直播]树莓派4B加装风扇并实现风力和CPU温度控制
  13. 获取新浪微博滚动加载内容
  14. malloc失败的一个原因
  15. C++ 常指针和指向常量的指针
  16. Java学习之面向对象
  17. Web 2.3.2 OpenVAS使用初探 / GVM使用入门教程(超详细)
  18. Prometheus入门实践
  19. 如何实现超大文件上传?
  20. GitLab CI/CD artifacts 属性的配置与使用

热门文章

  1. JDK8中Lambda 表达式语法糖脱糖[非原创]
  2. Connect Four四子棋c++程序 - 显示窗口(0)
  3. 我的疫情时代——记在家的那个学期
  4. 申请企业邮箱的好处,哪个企业邮箱好用?企业邮箱功能对比排行榜
  5. [跟进]_中国银联悄然推出B2C网站-银联在线商城
  6. windows服务器漏洞修复,三种修复Windows远程桌面服务漏洞(CVE-2019-0708)的方法
  7. 笔记本电脑亮度突然不能调的处理方法
  8. MBA-day21 假言推理-练习题
  9. kafka分布式集群的操作
  10. 图像处理空间域、变换域、时域和频域的含义理解:spatial VS transforms domain