设为首页
收藏本站
最近更新

文章搜索
本类热门

首页 >> 网络编程 >> JAVASCRIPT >> 新闻正文 [字体: ] [打印文档]
flash8与javascript集成 [2]

文章作者:
责任编辑:rosan 录入时间:2006-6-20 0:34:25 来源:WebStudio
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意.

百特科技[http://www.PCbyte.cn]专业的空间、主机提供商,域名注册绝对优惠!

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中的方块仍会保持原色。
最终源文件下载:source

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

范例演示

推荐好友 | 频道收藏 | 打印文档 | 报告错误  
相关连接
·JavaScript 中的作用域
·点评2006超强JS应用网站[3]
·点评2006超强JS应用网站[2]
·点评2006超强JS应用网站[1]
·Javascript实现神奇的页面滚动控制
·利用Atlas库为Web页面加入鼠标拖放功能(下)
·利用Atlas库为Web页面加入鼠标拖放功能(上)
·AJAX:带给开发者们崭新的一片天
同一专题
·无相关专题
发表评论 版权声明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有
转载
要求转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
共有评论查看评论
姓名: