`
convertto
  • 浏览: 124929 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

js和flash函数的调用

阅读更多
在过去的一年里,对于开发人员来说使用flash与javascript通讯总会碰到一些麻烦的事情,从flash调用javascript函数已经没有什么问题了,因为我们可以使用getURL方法来直接调用,但是要想使用javascript返回flash在许多浏览器上几乎是不可能的。但是现在可以了。
Flash8的出现,这件事就变的比较容易了。J

The ExternalInterface API

        之前我们使用flash调用javascript函数,一般使用这样的方法:
代码:
  
getURL(“javascript:alert(‘hello webstudio.com.cn’);”);
  

但是使用这种方法从flash调用javascript函数仍存在许多困难。特别是在处理多个javascript函数调用问题上。ExternalInterface API可以与javascript实现无缝调用,并且它的能力达到可以在flash时间线使用。

在我们正式进入它的使用方法之前,我们需要确保在flash时间上可用,就要导入它的类向这样:
代码:
  
import flash.external.*;
  


现在它已经允许我们做的第一件事就是可以调用javascript函数了。

Call 调用方法

call方法对于ExternalInterface对象来说是一个静态方法,也就是说我们不需要使用ExternalInterface对象的实例来调用方法,我们可以直接通过对象类来调用,向这样:
代码:
  
ExternalInterface.call(functionName:String,Parameters);
  

这个方法有两个参数:
·    functionName – 你想要调用的javascript函数名要以字符串的形式
·    Parameters – 需要传递给javascript函数的参数,用逗号分开,是可选的。
这些是基本的内容,现在让我们来看一个例子:
1.    创建一个flash文档命名为external1.fla.
2.    创建两个层上面的层命为AS,下面的层命名为”内容”
3.    在内容层里面,创建一个文本域,将它设置为输入文本域,打开显示边框以方便你能看到,并给它取个名字为alert_txt,将它放在场景的左边。
4.    仍然在内容这一层上,拖动一个按钮组件于场景中并把它放在动态文本的右边,设置它的label为”Alert”并给它起个名字为alert_butn.
5.    选择上方的as层在第一帧上输入代码,
6.    //调用alert
7.     代码:
  
import flash.external.*;
alert_butn.clickHandler = function() {
   ExternalInterface.call("alert", alert_txt.text);
}

  


前面部分的代码是导入ExternalInterface类包。然后为按钮组件设置事件,当点击时调用javascript函数,并将文本中输入的文本通过externalInterface传递给javascript函数。
现在发布你的影片,将它和html放在服务器上,当你在服务器上测试时不论你在文本中输入什么信息,它都将显示在alert对话框中,但是如果你在本地测试,你可能就会发现当你点击按钮时,什么也没发生,这是由flashplayer的安全特性造成的。


演示文件


上面这个范例是一个方法的例子,使用getURL方法也可以做到,然而externalinterface不只是能做到这些,除了发送信息给javascript,它还可以通过addCallback方法接收从javascript返回的信息。

addCallback 方法

AddCallback方法允许javascript调用flash时间上函数,基本的语法结构如下:
代码:
  
ExternalInterface.addCallback(functionID:String,instance:Object,functionName:Function);
  

与call方法类似,它也是一个静态方法,它有三个参数
·    functionID - 从 JavaScript 调用 ActionScript 函数时可使用的名称。此名称不必与 ActionScript 方法的实际名称匹配。
·    instance - this 在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,您可以指定任何对象(或 null)。
·    functionName - 要从 JavaScript 调用的 ActionScript 方法。
现在让我们开始一个例子,在这个例子中我们将使用flash调用javascript的命令来请示用户输入色值,当色值输入后点击ok,对象返回到flash并更改它的色彩,如下方法:
1.    创建一个flash文档命名为external2.fla.
2.    与第一个例子相同,创建两层上层命名为as.下层命名为“内容”。
3.    在内容层拖动一个按钮组件至场景中,放在左上方,将label设为”变色”,实例名为change_butn.
4.    确保当前在”内容层”,绘制一个色值为0x000000的盒子,大小为100*100,当然这个没有限制。
5.    将这个方块转换为movieclip.实例名称命名为rec_mc.
6.    在第一帧上输入代码如下:
代码:
  
import flash.external.*;
//改变方块的色彩
function onChange(clr:Number) {
var temp_color:Color = new Color(rec_mc);
   temp_color.setRGB(clr);
}
//允许javascript调用onChang函数
ExternalInterface.addCallback("onChange", this, onChange);
//打开命今窗口
change_butn.clickHandler = function() {
   ExternalInterface.call("callPrompt", "你想用什么的色彩? (ex: 0xff0000)");
}

  


在代码的前边我们要先导入externalinterface类包,然后我们创建一个能改变场景中方块色彩的函数,完成后,我们调用addCallback 方法以使javascript可以调用flash的onChang函数。最后,我们针对按钮创建事件来调用javascript命令。
你需要发布swf和html,然后用编辑软件打开编辑器,如果你只是从flash调用javascirpt,那么你什么也不用做。但是如果你需要使用javascirpt调用flash函数,还有一些小的工作需要做。

在tilte标签的下方加入下面的javascript代码:如下:
代码:
  

<script language=JavaScript>
var me; //代表swf的id
//获取正确的引用
function getID(swfID) {
   if (navigator.appName.indexOf("Microsoft") > -1) {
      me = window[swfID];
   } else {
      me = document[swfID];
   }
}
//下面这段调用onChang函数并返回到flash.
function makeCall(str){
   me.onChange(str);
}
//下面这个函数是被flash调用的。
function callPrompt(str){
   makeCall(prompt(str));
}
</script>

  


开始,我们创建变量me来存放swf的引用。如果没有它,我们不能调用flash函数。然后我们使用函数getID通过条件针对不同的浏览器来设置引用,之后,我们创建makeCall函数,用来调用flash函数,最后我们创建由flash来调用的函数callPromt().它将调用makeCall函数来发送信息返回到flash.
在html的body标签的属性中加入onload,并设置它等于getID函数,如下:
代码:
  
<body bgcolor="#ffffff" >
  

注意,当我们设函数给onload事件,我们传递给它swf的id.它可以在swf的嵌入位置找到,现在,当页初始化完成后,函数getID将被调用,变量me就会被设置,以使javascript可以调用flash函数。
将文件上传到服务器上,并进行测试,当你点击按钮并在提示中输入色彩值,flash中的方块色就会改变。如下。

范例演示

在弹出窗口时如果你没有输入色彩值,而是点击了取消,会返回null空回flash.flash中的方块仍会保持原色。
最终源文件下载(source)

本人对上面的内容进行了一下整合,制作了一个终合范例,集成有显示swf信息,获取网址,调用对话框.

范例演示 <!--v:3.2-->
分享到:
评论
1 楼 yqd2005 2009-09-02  

相关推荐

    js调用AS flash函数

    总结来说,JS调用AS的Flash函数是通过`ExternalInterface`接口实现的,它允许在JS和AS之间建立双向通信,使得动态内容的实现更为丰富和灵活。在实践中,开发者需要考虑安全、兼容性和数据转换等问题,以确保在各种...

    FlashPlayer组件调用FLASH函数接口

    总结来说,FlashPlayer组件调用FLASH函数接口是通过ACTIONSCRIPT的ExternalInterface类实现的,它允许JavaScript和ACTIONSCRIPT之间进行双向通信。这在创建互动游戏、媒体播放器、数据可视化和其他复杂网络应用时...

    jsp和flash函数互相调用.txt

    #### JSP调用Flash函数:`ExternalInterface.call` 在JSP页面中,可以通过调用Flash中的`ExternalInterface.call`方法来触发Flash内部的函数执行。此方法的基本格式为: ```actionscript ExternalInterface.call(...

    javascript与flash相互调用

    一旦Flash加载完成,JavaScript可以使用`swfObject.getFlashById`获取Flash对象引用,然后调用`call`方法,传递要执行的ActionScript函数名和参数。 4. **Flash 调用 JavaScript**:在Flash ActionScript中,首先...

    JS 调用Flash播放mp3

    在JavaScript中,我们可以创建一个对象,该对象包含了调用Flash方法的函数,如`play()`, `stop()`, 和 `changeAudio()`。 例如,假设我们的SWF文件已经定义了一个名为`playSound`的方法,我们在JavaScript中可以...

    js调用flash文件的视频

    根据提供的文件信息,本文将详细解析如何通过JavaScript(简称JS)来调用并优化Flash文件在网页中的展示方式。此方法特别适用于希望去除Flash播放器默认边框的应用场景。 ### JS调用Flash文件的关键技术点 #### 1....

    JS与FLASH相互调用0积分0积分

    标题和描述中的“JS与FLASH相互调用”指的是在网页开发中JavaScript(简称JS)与Adobe Flash之间的交互技术。在Web开发的历史上,Flash曾是创建动态内容、视频播放和复杂用户界面的主要工具之一,而JavaScript则是...

    Flash(AS3)与JS相互调用

    通过ExternalInterface.addCallback()方法,创建函数接口,实现JS调用Flash函数。 创建接口后,在JS中调用Flash函数并向函数传值。 ======== 注 意 事 项 ======== 1、请打开文件夹中的html文件查看结果。 2、...

    Flash(AS3)和C#之间的相互函数调用(例子)

    通过以上步骤,我们可以实现Flash AS3与C#之间的函数调用。这种技术在多种场景下都非常有用,比如桌面应用与嵌入式Flash组件的交互,或是游戏中的自定义UI交互。理解并熟练掌握这种通信方式将极大地扩展你的开发能力...

    js调用flash问题

    当Flash调用JavaScript函数时,我们可以传递参数并获取结果。在上面的AS3示例中,我们调用了名为`jsCallback`的JavaScript函数。因此,我们需要在JavaScript中定义它: ```javascript function jsCallback...

    易语言调用API实现flash播放器

    此外,为了适应现代Web的发展,开发者通常会推荐使用HTML5的`&lt;video&gt;`标签或JavaScript库(如Video.js、Flowplayer等)来替代Flash播放功能。 在实际操作中,易语言的使用者可以参考“浅浅”的相关教程或代码示例,...

    js调用as函数百分百能使用

    总结,JS调用AS函数是通过Flash的ExternalInterface API实现的,它允许在JavaScript和ActionScript之间建立通信桥梁。尽管这种方法在某些场景下仍然有用,但随着Web技术的发展,开发者应该逐步转向更现代的解决方案...

    js调用as函数方法例子

    在JavaScript和Adobe Flex(一种基于ActionScript的富互联网应用程序开发框架)的交互中,常常需要在JavaScript中调用Flex中的ActionScript函数。这样的需求通常出现在Web应用中,当需要利用Flex的强大图形处理能力...

    flash与JS函数.txt

    Flash与JS函数交互的基础在于它们如何相互调用和传递数据。Flash中内置了一系列用于与外部脚本(如JS)通信的函数,这些函数允许Flash内容读取或修改HTML页面中的元素,反之亦然。这种双向通信极大地扩展了Flash的...

    FLASH调用外部文件详解

    - 除了文本和SWF,Flash还能加载图片(如.jpg、.gif、.png等)、音频文件(如.mp3)和JavaScript文件。 - 对于图片,可以使用`loadMovie()`或`loadImage()`函数。 - 音频文件通常通过ActionScript的Sound类加载和...

    webcamjs兼容多浏览器调用摄像头拍照上传,兼容H5和flash

    WebcamJS内部处理了Flash与JavaScript之间的通信,通过Flash的External Interface或ActionScript来实现摄像头的访问和图片的捕获。 使用WebcamJS时,开发者需要在页面上设置一个div元素作为摄像头预览的容器,然后...

    js与as相互调用

    4. 异步调用:由于JS和AS运行在不同的上下文中,理解异步编程的概念对于处理回调函数和错误处理至关重要。 总之,JS与AS的相互调用是一种强大的工具,可以结合两者的优势来创建更具互动性的Web内容。但是,随着...

    js与as通信,js调用flash的方法

    在JavaScript (JS) 和ActionScript (AS) 之间进行通信是一种常见的需求,特别是在网页中集成Flash内容时。本文将深入探讨如何实现JS与AS的交互,以及如何通过JS调用Flash中的方法。我们将通过几个关键知识点来理解这...

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

    ### 如何在网页中利用JavaScript调用Flash动画 随着互联网技术的发展,网页设计与开发领域不断引入新的技术和标准。在过去的年代里,Flash是创建动态和交互式内容的重要工具之一。本文将详细介绍如何通过JavaScript...

    js和flash交互的小例子

    在IT领域,JavaScript(简称JS)和Adobe Flash是两种广泛使用的技术,它们分别在网页动态效果和多媒体内容呈现上有着独特的优势。本文将通过一个小例子深入讲解如何实现JS与Flash之间的交互,帮助开发者更好地理解和...

Global site tag (gtag.js) - Google Analytics