Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?仅仅是这样编程比較麻烦而已,又要调试Flash,然后又要放到server上调试。

只是这种方式可以收到非常好的效果。Flash强大的画图功能、图形功能,可以与网页的參数传递联系起来,配合后端的server语言,可以收到非常大效果。

以下举个样例用ActionScript3.0来说明这个问题,例如以下图:

IE6效果:

火狐效果:

一旦浏览器装上Flash插件,Flash就行轻松与网页互通消息。

不管在不论什么浏览器,如今基本上用户都会装上Flash组件的,可以这样说。差点儿就没有不装Flash组件的浏览器。

一、Flash部分

1、首先,新建一个ActionScript3.0的Flash。新建之后就保存为webPage.fla,这次的Flash无须这么大的尺寸,否则网页中会有非常多的留白,设置大小为500x100px就能够了。

播放器的版本号依照默认就能够,由于用户的浏览器Flash组件会自己主动更新的。

这个不用管。

2、通过窗体->组件,或者Ctrl+F7打开组件面板,利用自带的button、标签文本、输入框组件布置界面。

3、拖出例如以下的界面,设置各个组件的属性例如以下,设置其text值。也就是要显示的文字,为部分要控制的组件设置实例名称,也就是Id,比方button设置成Button1。输入框设置成EditField1。一会儿要给网页JavaScript控制的标签文本的text值清空,事实上例名称为Label1。

4、之后点击第一帧,打开动作面板,或者点击F9。写入例如以下的代码:

import flash.external.ExternalInterface;

flash.system.Security.allowDomain("*");
flash.system.Security.allowInsecureDomain("*");//设置同意全部站点都同意Flash与网页之间交互 Button1.addEventListener("click",function(){//点击Button1这个button
ExternalInterface.call("show",EditField1.text);
//则调用JavaScript中的function show(message){}函数,当中message这个參数值,由EditField1输入的东西填充
}); function JavaScriptShow1(message1){
//定义一个函数,一旦这个函数触发则把传来的值,填充Label1这个标签文本
Label1.text=message1;
}
ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1);
//注冊JavaScriptShow1这个函数。其对外名称为JavaScriptShow1。一般都应该同样的
//网页调用Flash对象的JavaScriptShow1的方法。则相当于调用ActionScript中的JavaScriptShow1(message1){}函数

5、此时Flash的部分完成。选择文件->公布,打开Flash保存的目录。

事实上上面的内容比《【ActionScript】ActionScript3.0的Helloworld》(点击打开链接)没复杂多少,仅仅是多了两句注冊ActionScript与JavaScript的交互的语句而已。



二、网页的部分

1、之后,要把这个Flash布置到网页上。

Flash公布之后,会在网页中生成两个东西一个html与一个swf,核心文件是.swf文件,html文件不能照搬的,仅仅能借鉴当中的代码,否则不能兼容野狐禅、谷歌等浏览器。

这个由Flash生成webPage.html页面。能够借鉴的代码例如以下:

2、因为Flash禁用了Flash调用本地文件的功能。你仅仅能把这个webPage.swf复制到你的server上调试。之后在server上新建一个.html的页面,这里以swf.html与webPage.swf同文件夹做样例,如果不同样例请自己设置好绝对路径。如果是swf.html,swf.html的HTML布局例如以下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN">
<head>
<title>webPage</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
Flash与网页交互
<input type="text" id="text1" />
<button onclick="toFlash()">发信息给Flash。</button>
<!--这段代码的部分能够在公布出来的html中截取-->
<div>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" id="webPage" align="middle"><!--这里的id是为了flash给IE系列浏览器控制-->
<!--对IE有效的代码-->
<param name="movie" value="webPage.swf" /><!--为IE浏览器指明flash的路径-->
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="always" /><!--这里一定要设置成always,打开Javascript与Actionscript的交互权限-->
<!--对野狐禅、谷歌等有效的代码-->
<embed src="webPage.swf" width="500" height="100" id="webPage"></embed><!--这里的id是为了flash给野狐禅、谷歌等浏览器控制,src的值为野狐禅、谷歌等浏览器指明flash的路径-->
</object>
</div>
</body>
</html>

之后的JavaScript布局。是ActionScript与JavaScript交互的核心。代码例如以下:

<script type="text/javascript">
//给ActionScript所调用的JavaScript函数。message这个參数被ActionScript传递过来的值所填充
function show(message){
alert(message);
} //获取Flash对象的函数。不同的对象有不同的方法。为了兼容。仅仅能这样写。
function getFlash(movieName){
if (window.document[movieName]) {
window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else {
return document.getElementById(movieName);
}
} //获取Flash对象
var flash1 = getFlash('webPage'); //JavaScript调用ActionScript中注冊为JavaScriptShow1的函数
function toFlash(){
var text1 = document.getElementById("text1").value;
flash1.JavaScriptShow1(text1);
}
</script>

三、总结

综上所述,webPage.swf与swf.html的交互例如以下图:

【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互的更多相关文章

  1. Dreamweaver Flash Photoshop网页设计综合应用 (智云科技) [iso] 1.86G​

    全书共15章,主要包括网页制作基础.Dreamweaver CC网页制作.Photoshop CC网页图像设计.Flash CC网页动画设计以及综合案例实战5个部分.通过本书的学习,不仅能让读者学会三 ...

  2. Dreamweaver Flash Photoshop网页设计综合应用 (智云科技) [iso] 1.86G

    全书共15章,主要包括网页制作基础.Dreamweaver CC网页制作.Photoshop CC网页图像设计.Flash CC网页动画设计以及综合案例实战5个部分.通过本书的学习,不仅能让读者学会三 ...

  3. 在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法

    在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法 [MXDRAW CAD控件文档] 下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中. 1.      主要用到 ...

  4. C# WinForm 和 javascript进行交互 使用HTML做界面

    01 using System; 02 using System.Collections.Generic; 03 using System.Text; 04 using System.Reflecti ...

  5. C# windows程序应用与JavaScript 程序交互实现例子

    C# windows程序应用与JavaScript 程序交互实现例子 最近项目中又遇到WinForm窗体内嵌入浏览器(webBrowser)的情况,而且涉及到C#与JavaScript的相互交互问题, ...

  6. Silverlight与JavaScript的交互操作

    Silverlight和JavaScript交互介绍以及简单Demo演示,主要包括JavaScript操作Silverlight数据.Silverlight操作JavaScript数据以及数据模版绑定 ...

  7. 网页特效-动态加载JavaScript

    描述: 把一些逻辑独立的JavaScript脚本文件单独加载,是一种常见的JavaScript动态加载技术.可以减少不必要的JavaScript脚本文件的加载,以提高网页浏览速度 代码: <!D ...

  8. 【HANA系列】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  9. 【JavaScript】在同一个网页中实现多个JavaScript特效

    在网页中,假设出现两次<script type="text/javascript"></script>标签,全部的JavaScipt脚本都不会再生效,仅仅能 ...

随机推荐

  1. android下拉弹出动画

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http:// ...

  2. 在Myeclipse8.5中安装findbugs方法

    step 1:首先从官网下载findbugs插件:http://downloads.sourceforge.net/project/findbugs/findbugs%20eclipse%20plug ...

  3. nginx的进程模型

    nginx采用的也是大部分http服务器的做法,就是master,worker模型,一个master进程管理站个或者多个worker进程,基本的事件处理都是放在woker中,master负责一些全局初 ...

  4. 【转】C# client 与java netty 服务端的简单通信,客户端采用Unity

    http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分 ...

  5. JVM(8):JVM知识点总览-高级Java工程师面试必备

    http://www.importnew.com/23792.html jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点 ...

  6. 【Luogu】P2824排序(二分答案+线段树排序)

    题目链接 震惊!两个线段树和一个线段树竟是50分的差距! 本题可以使用二分答案,二分那个位置上最后是什么数.怎么验证呢? 把原序列改变,大于等于mid的全部变成1,小于mid的全部变成0,之后线段树排 ...

  7. [luogu2044][NOI2012] 随机数生成器 [矩阵快速幂]

    题面: 传送门 思路: 看一眼这个公式: $x\left[n+1\right]=\left(a\ast x\left[n\right]+c\right) mod m$ 递推,数据范围$n\leq 10 ...

  8. python网络

    try: import urllib.request as urllib2 except ImportError: import urllib2 response = urllib2.urlopen( ...

  9. 向量内积(bzoj 3243)

    Description 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: 现有 n 个d 维向量x1,...,xn ,小喵喵想知 ...

  10. 游戏(bzoj 1854)

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...