【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互

Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?只是这样编程比较麻烦而已,又要调试Flash,然后又要放到服务器上调试。不过这样的方式能够收到很好的效果,Flash强大的绘图功能、图形功能,能够与网页的参数传递联系起来,配合后端的服务器语言,能够收到很大效果。

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

IE6效果:


火狐效果:


一旦浏览器装上Flash插件,Flash就能够轻松与网页互通消息。无论在任何浏览器,现在基本上用户都会装上Flash组件的,可以这样说,几乎就没有不装Flash组件的浏览器。

一、Flash部分

1、首先,新建一个ActionScript3.0的Flash,新建之后就保存为webPage.fla,这次的Flash无须这么大的尺寸,否则网页中会有很多的留白,设置大小为500x100px就可以了。播放器的版本按照默认就可以,因为用户的浏览器Flash组件会自动更新的。这个不用管。


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


3、拖出如下的界面,设置各个组件的属性如下,设置其text值,也就是要显示的文字,为部分要控制的组件设置实例名称,也就是Id,比如按钮设置成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这个按钮
	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拷贝到你的服务器上调试。之后在服务器上新建一个.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 οnclick="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 3.0开发人员指南中文版,总共67章,955页。学习actionScript不错的书籍。 目录: 目录 第章:使用日期和时间 管理日历日期和时间 控制时间间隔 日期和时间示例:简单模拟时钟 第章:使用字符串 字符串基础知识 创建字符串 length属性 处理字符串中的字符 比较字符串 获取其他对象的字符串表示形式 连接字符串 在字符串中查找子字符串和模式 转换字符串的大小写 字符串示例:ASCII图表 第章:使用数组 数组基础知识 索引数组 关联数组 多维数组 克隆数组 扩展Array类 数组示例:播放列表 第章:处理错误 错误处理基础知识 错误类型 ActionScript中的错误处理 使用Flash运行时的调试版 在应用程序中处理同步错误 创建自定义错误类 响应错误事件和状态 比较错误类 处理错误示例:CustomErrors应用程序 第章:使用正则表达式 正则表达式基础知识 正则表达式语法 对字符串使用正则表达式的方法 正则表达式示例:Wiki解析程序 第章:使用XML XML基础知识 用于处理XML的EX方法 XML对象 XMLList对象 初始化XML变量 组合和变换XML对象 遍历XML结构 使用XML命名空间 XML类型转换 读取外部XML文档 在ActionScript中使用XML的示例:从Internet加载RSS数据 第章:使用本机JSON功能 JSONAPI概述 定义自定义JSON行为 第章:处理事件 事件处理基础知识 ActionScript事件处理早期版本事件处理的不同之处 事件流 事件对象 事件侦听器 事件处理示例:闹钟 第章:使用应用程序域 第章:显示编程 显示编程的基础知识 核心显示类 显示列表方法的优点 使用显示对象 处理显示对象 对象动画 舞台方向 动态加载显示内容 显示对象示例:SpriteArranger 第章:使用几何结构 几何结构基础知识 使用Point对象 使用Rectangle对象 使用Matrix对象 几何形状示例:对显示对象应用矩阵转换 第章:使用绘图API 绘制API的基础 Graphics类 绘制线条和曲线 使用内置方法绘制形状 创建渐变线条和填充 将Math类绘制方法配合使用 使用绘图API进行动画处理 绘制API示例:算法可视化生成器 绘图API高级用法 第章:使用位图 位图使用基本知识 Bitmap和BitmapData类 处理像素 复制位图数据 使用杂点功能制作纹理 滚动位图 利用mipmap处理 位图示例:带动画效果的旋转的月亮 位图图像的异步解码 第章:过滤显示对象 过滤显示对象的基础知识 创建和应用滤镜 可用的显示滤镜 筛选显示对象示例:FilterWorkbench 第章:使用PixelBender着色器 PixelBender着色器基础知识 加载或嵌入着色器 访问着色器元数据 指定着色器输入和参数值 使用着色器 第章:使用影片剪辑 影片剪辑基础知识 使用MovieClip对象 控制影片剪辑播放 使用ActionScript创建MovieClip对象 加载外部SWF文件 影片剪辑示例:RuntimeAssetsExplorer 第章:使用补间动画 补间动画基础知识 在Flash中复制补间动画脚本 合并补间动画脚本 描述动画 添加滤镜 将补间动画其显示对象关联 第章:使用反向运动 反向运动的基础知识 IK骨架动画处理概述 获取有关IK骨架的信息 实例化IKMover并限制其移动 移动IK骨架 使用弹簧 使用IK事件 第章:在三维(D)环境中工作 D显示对象的基础知识 了解FlashPlayer和AIR运行时中的D显示对象 创建和移动D显示对象 将D对象投影到D视图上 示例:透视投影 执行复杂的D转换 通过三角形获得D效果 第章:文本使用基础知识 第章:使用TextField类 显示文本 选择和操作文本 捕获文本输入 限制文本输入 设置文本格式 高级文本呈现 使用静态文本 TextField示例:报纸风格的文本格式设置 第章:使用Flash文本引擎 创建和显示文本 处理FTE中的事件 设置文本格式 使用字体 控制文本 Flash文本引擎示例:新闻版面布局 第章:使用TextLayoutFramework TextLayoutFramework概述 使用TextLayoutFramework 使用TLF构建文本结构 使用TLF设置文本格式 使用TLF导入和导出文本 使用TLF管理文本容器 使用TLF启用文本选择、编辑和撤消 使用TLF处理事件 在文本内定位图像 第章:处理声音 声音处理基础知识 了解声音体系结构 加载外部声音文件 处理嵌入的声音 处理声音流文件 处理动态生成的音频 播放声音 加载和播放声音时的安全注意事项 控制音量和声相 处理声音元数据 访问原始声音数据 捕获声音输入 声音示例:PodcastPlayer 第章:使用视频 视频基础知识 了解视频格式 了解Video类 加载视频文件 控制视频播放 在全屏模式下播放视频 流式传输视频文件 了解提示点 编写元数据和提示点的回调方法 使用提示点和元数据 监控NetStream活动 视频文件的高级主题 视频示例:视频自动唱片点唱机 使用StageVideo类来实现硬件加速呈现 第章:使用摄像头 了解Camera类 在屏幕上显示摄像头内容 设计摄像头应用程序 连接至用户的摄像头 验证是否已安装摄像头 检测摄像头的访问权限 最优化摄像头视频品质 监控摄像头状态 第章:使用数字权限管理 了解受保护的内容工作流程 NetStream类中DRM相关的成员和事件 使用DRMStatusEvent类 使用DRMAuthenticateEvent类 使用DRMErrorEvent类 使用DRMManager类 使用DRMContentData类 更新FlashPlayer以支持FlashAccess 带外许可证 域支持 使用域支持播放加密的内容 许可证预览 提交内容 OpenSourceMediaFramework 第章:在AIR中添加PDF内容 检测PDF功能 加载PDF内容 编写PDF内容的脚本 对AIR中的PDF内容的已知限制 第章:用户交互的基础知识 捕获用户输入 管理焦点 了解输入类型 第章:键盘输入 捕获键盘输入 使用IME类 虚拟键盘 第章:鼠标输入 捕获鼠标输入 鼠标输入示例:WordSearch 第章:触摸、多点触控和手势输入 触摸输入的基础知识 触摸支持发现 Touch事件处理 触摸和拖动 Gesture事件处理 疑难解答 第章:复制和粘贴 复制粘贴基础知识 读取和写入系统剪贴板 AIR中的HTML复制和粘贴 剪贴板数据格式 第章:加速器输入 检查加速计支持 检测加速计更改 第章:AIR中的拖放 AIR中拖放的基础知识 支持拖出手势 支持拖入手势 HTML中的拖放 将数据拖出HTML元素 将数据拖入HTML元素 示例:覆盖默认的HTML拖入行为 在非应用程序HTML沙箱中处理文件放置 放置文件释放 第章:使用菜单 菜单基础知识 创建本机菜单(AIR) 关于HTML中的上下文菜单(AIR) 显示弹出本机菜单(AIR) 处理菜单事件 本机菜单示例:窗口和应用程序菜单(AIR) 第章:AIR中的任务栏图标 关于任务栏图标 停靠栏图标 系统任务栏图标 Window任务栏图标和按钮 第章:使用文件系统 使用FileReference类 使用AIR文件系统API 第章:存储本地数据 共享对象 加密的本地存储区 第章:在AIR中使用本地SQL数据库 关于本地SQL数据库 创建和修改数据库 操作SQL数据库数据 使用同步和异步数据库操作 对SQL数据库使用加密 使用SQL数据库的策略 第章:使用字节数组 读取并写入ByteArray ByteArray示例:读取zip文件 第章:网络和通信基础知识 网络接口 网络连接更改 域名系统(DNS)记录 第章:套接字 TCP套接字 UDP套接字(AIR) IPv地址 第章:HTTP通信 加载外部数据 Web服务请求 在其他应用程序中打开URL 第章:其他FlashPlayer和AIR实例通信 关于LocalConnection类 在两个应用程序之间发送消息 连接到不同域中的内容和AIR应用程序 第章:AIR中的本机进程通信 本机进程通信概述 启动和关闭本机进程 本机进程通信 本机进程通信的安全性注意事项 第章:使用外部API 使用外部API的基础知识 外部API要求和优点 使用ExternalInterface类 外部API示例:在ActionScript和Web浏览器中的JavaScript之间进行通信 第章:AIR中的XML签名验证 XML签名验证的基础知识 关于XML签名 实现IURIDereferencer接口 第章:客户端系统环境 客户端系统环境基础知识 使用System类 使用Capabilities类 功能示例:检测系统功能 第章:AIR应用程序的调用和终止 应用程序调用 捕获命令行参数 用户登录时调用AIR应用程序 从浏览器调用AIR应用程序 应用程序终止 第章:处理AIR运行时和操作系统信息 管理文件关联 获取运行时版本和修补级别 检测AIR功能 跟踪用户当前状态 第章:使用AIR本机窗口 AIR中的本机窗口的基础知识 创建窗口 管理窗口 侦听窗口事件 显示全屏窗口 第章:AIR中的显示屏幕 AIR中的显示屏幕的基础知识 枚举屏幕 第章:打印 打印基础知识 打印页面 Flash运行时任务和系统打印 设置大小、缩放和方向 高级打印技术 打印示例:多页面打印 打印示例:缩放、裁剪和响应 打印示例:页面设置和打印选项 第章:Geolocation 检测geolocation更改 第章:应用程序国际化 应用程序国际化基础知识 flashglobalization包概述 确定区域设置 设置数字格式 设置货币值格式 设置日期和时间格式 排序和比较字符串 大小写转换 示例:国际化股票报价应用程序 第章:本地化应用程序 选择区域设置 本地化Flex内容 本地化Flash内容 本地化AIR应用程序 对日期、时间和货币进行本地化 第章:关于HTML环境 HTML环境概述 AIR和WebKit 第章:在AIR中进行HTML和JavaScript编程 关于HTMLLoader类 避免安全相关的JavaScript错误 通过JavaScript访问AIRAPI类 关于AIR中的URL 使ActionScript对象可用于JavaScriptActionScript访问HTMLDOM和JavaScript对象 在HTML中嵌入SWF内容 在HTML页中使用ActionScript库 转换Date和RegExp对象 从ActionScript操作HTML样式表 跨脚本访问不同安全沙箱中的内容 第章:为AIRHTML容器编写脚本 HTMLLoader对象的显示属性 滚动HTML内容 访问HTML历史记录列表 设置在加载HTML内容时使用的用户代理 设置用于HTML内容的字符编码 为HTML内容定义类似于浏览器的用户界面 创建HTMLLoader类的子类 第章:处理AIR中HTML相关的事件 HTMLLoader事件 使用ActionScript处理DOM事件 响应未捕获的JavaScript异常 使用JavaScript处理运行时事件 第章:在移动应用程序中显示HTML内容 StageWebView对象 内容 导航事件 历史记录 焦点 位图捕获 第章:安全性 FlashPlatform安全概述 安全沙箱 权限控制 限制网络API 全屏模式安全性 加载内容 跨脚本访问 作为数据访问加载的媒体 加载数据 从导入到安全域的SWF文件加载嵌入内容 使用旧内容 设置LocalConnection权限 控制外出URL访问 共享对象 摄像头、麦克风、剪贴板、鼠标和键盘访问 AIR安全性 第章:如何使用ActionScript示例 示例类型 在FlashProfessional中运行ActionScript示例 在FlashBuilder中运行ActionScript示例 在移动设备上运行ActionScript示例 第章:本地数据库中的SQL支持 支持的SQL语法 数据类型支持 第章:SQL错误详细消息、ID和参数 第章:Adobe图形汇编语言(AGAL) AGAL字节码格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值