快速业务通道

flash8与javascript集成

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-09

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="getID(''external2'');"> 注意,当我们设函数给onload事件,我们传递给它swf的id.它可以在swf的嵌入位置找到,现在,当页初始化完成后,函数getID将被调用,变量me就会被设置,以使javascript可以调用flash函数。 将文件上传到服务器上,并进行测试,当你点击按钮并在提示中输入色彩值,flash中的方块色就会改变。如下: 演示文件 在弹出窗口时如果你没有输入色彩值,而是点击了取消,会返回null空回flash.flash中的方块仍会保持原色。 本人对上面的内容进行了一下整合,制作了一个终合范例,集成有显示swf信息,获取网址,调用对话框。 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号