版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第22章AS3.0与网络通信Flash之所以能够有着越来越大的发展空间,其良好的数据交互功能也起着极为重要的作用。在ActionScript3.0中,所有的与外部数据进行交互的功能都被放在.*包中,有专门的类进行管理,而且实现了流程的的标准、统一,使Flash与外界数据的交互更加的清晰与简单。本章讲着重介绍ActionScript3.0与外界数据交互的原理、Flash与外部数据的连接和交互以及Flash与计算机本地数据的交互操作。22.1数据通信基础在创建复杂的ActionScript3.0应用程序时,通常需要与服务器端脚本进行通信,或者从外部XML文件或文本文件加载数据。在ActionScript3.0中,使用URLLoader和URLRequest类来加载外部文件。加载成功的文件可使用特定类来访问数据,具体使用何类,取决于加载数据的数据类型。比如如果加载数据的格式为名称值对类型,则可以使用URLVariables类来分析服务器结果。如果加载的文件是外部XML文档,则可以使用XML类的构造函数、XMLDocument类的构造函数或XMLDocument.parseXML()方法来分析XML文档。本节讲介绍数据通信的原理、从外部文件或服务器脚本中加载数据和将数据发送到服务器脚本方法。22.1.1构建通信请求过程在ActionScript3.0中,要实现一个网络通信,需要三个过程来实现,具体为:(1)使用URLRequest创建通信请求对象。(2)使用通信请求对象,创建URLLoader载入对象,并发出请求的要求。(3)监听URLLoader对象,在响应完成事件后,返回要处理的数据。下面来逐步介绍通信的过程和方法。1.构建通信请求对象2.发出数据请求3.获取返回数据22.1.2加载文本格式数据文本格式数据包括:普通文本、XML、HTML等以UTF-8字符组成的字符串文本都属于文本格式。下面的示例实现从外部的test.html文件种读取数据,并把它显示在文本框中,实现读取外部html网页格式文本的效果。test.html文本内容如图所示。test.html文本内容22.1.3加载值对格式数据如果要加载的外部文本时值对格式的数据,并且以URL形式编码,则需要将URLVariables的dataFormat类型设置为URLLoaderDataFormat.VARIABLES。一般的值对格式的数据样式如下所示。variable1=value1&variable2=value2。下面的示例实现从外部的test.txt文档中取得值对格式的数据,并在Flash中使用文本进行显示。test.txt文档内容如下所示。标题=AS3.0基础教材&作者=浪子啸天&支持网站=22.1.4加载二进制格式数据二进制文件是指包含在ASCII及扩展ASCII字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。ASCII则是可以用任何文字处理程序阅读的简单文本文件。在ActionScript3.0中,二进制文件主要是为了强调与文本文件的区分,大部分的非文本格式文件都被归为二进制文件。在ActionScript3.0中,所有的图像、SWF文件都可以以二进制格式载入,以ByteArray字节数组来表示,此数组储存在URLLoader对象的data属性中。22.1.5发送数据如果需要向服务器发送数据,可以有两种方式可供选择:一是若只是发送不需要返回数据,则可以使用sendToURL()方法来实现,其用法格式如下:sendToURL(req:URLRequest)二是既需要发送数据,也需要返回数据,则使用Loader对象的load()方法来实现。通常的数据发送需要执行下面的两步操作:(1)将需要提交的数据放入URLRequest对象的data属性中,然后使用URLLoader对象的load()方法发送数据。(2)从URLLoader对象的data属性中获取返回的数据并分析。下面的示例实现将Flash中的数据发送到后台的asp文件中,并返回响应的数据信息。22.1.6打开外部链接效果在ActionScript3.0中,要在Flash中打开网址,需要使用包中的navigateToURL()函数来实现。其用法格式如下所示。navigateToURL(request:URLRequest,window:String=null)说明:此方法实现在包含FlashPlayer容器的应用程序中,通常是在一个浏览器中,打开或者替换一个窗口。参数说明如下:request:URLRequest对象,指定要链接到哪个URL网页地址。window:浏览器窗口或HTML帧,其中显示request参数指示的文档。可以输入某个特定窗口的名称,或者是下面的4个值之一:“_self”指定当前窗口中的当前帧打开网页;“_blank”指定一个新窗口打开网址;“_parent”指定当前窗口的父级窗口打开网址;“_top”指定当前窗口中的顶级框架中打开网址。22.2与JavaScript通信在Flash应用程序中,常常使用Web浏览器作为宿主程序,以实现FlashPlayer播放器与外部数据之间的数据交换。在ActionScript3.0中,使用ExternalInterface类实现Flash和JavaScript脚本进行交互操作。本节将介绍Flash到JavaScript和JavaScript到Flash的数据交互的实现方法。ExternalInterface类是Flash外部的应用程序的编程接口,是一个能够在在ActionScript和FlashPlayer容器(通常为Web浏览器)之间实现直接通信的应用程序编程接口。使用此接口,可以实现包含JavaScript的HTML页与ActionScript之间的通信。在FlashPlayer中,可以使用HTML页中定义的的JavaScript来调用ActionScript函数。ActionScript函数可以返回一个值,JavaScript会立即接收它作为该调用的返回值。22.2.1JavaScript脚本简介JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,此语言可以被嵌入到HTML文件之中。使用JavaScript,可使网页变得生动,能够重复使用同一段代码,能够使与HTML文断简化,减少下载时间。javaScript语言有很多优点,具体如下:1.使用简单2.动态交互3.跨平台操作4.节约页面资源22.2.2在网页中加入JavaScript有两种方法可以实现在网页中加入JavaScript代码,分别为:直接加入HTML文档和间接引用js文件。1.直接加入HTML文档2.间接引用js文档JavaScript示例代码
HTML中JavaScript输出效果
22.2.3Flash向JavaScript传递数据要实现Flash向JavaScript传递数据,可以使用ExternalInterface类的call()方法采用异步调用的方式调用JavaScript的函数来实现。所谓的异步调用,指的是无需等待函数的返回值就让操作继续进行的函数调用方式。ExternalInterface类的call()方法,语法格式如下所示。call(functionName:String,...arguments)说明:此方法为FlashPlayer容器公开的函数,不传递参数或传递多个参数。如果该函数不可用,调用将返回null;否则,它返回由该函数提供的值。22.2.4JavaScript向Flash传递数据要实现JavaScript向Flash传递数据,可以使用ExternalInterface类的addCallback()方法将ActionScript中的函数注册为可以从容器中进行调用。成功调用addCallBack()后,在容器中使用JavaScript或ActiveX代码可以调用在FlashPlayer中注册的函数。ExternalInterface类的addCallback()方法,语法格式如下所示。addCallback(functionName:String,closure:Function)functionName:要在容器中调用的函数的函数名称。要调用的closure函数。其可能是一个独立的函数,或者可能是引用对象实例方法的closure方法。通过传递closure方法,可以将回调定向到特定对象实例的方法。利用JavaScript向Flash传递数据的过程,可以实现下面的操作:调用ActionScript函数。使用标准的函数调用表示法传递参数。将值返回给JavaScript函数。22.3So本地数据存储Flash影片运行过程中,大多数的数据都存储于影片本身,一旦影片被关闭,这些数据也就从内存中被清除掉,下次运行时,数据将从头开始。若想存储数据或者让客户端的多个影片共享同一组数据,就要想办法把数据存储在Flash播放器之外。在ActionScript3.0中,SharedObject类实现了在客户端机器中持久性存储数据。有两种类型的共享对象:本地和远程。本节主要介绍在本地储存数据。22.3.1创建ShareObject对象Flash的ShareObject对象一般简称为SO,类似于Web浏览器中的cookies。它们被一些开发者称为“超级cookies”,因为SO可以存储大量数据,且存储和读取的都是原生的ActionScript类型数据。ShareObject对象默认的空间大小100KB,用户可以通过FlashPlayer'sSettingsManager控制的使用空间大小,来严格限制被使用的空间。存储在本地计算机的SO文件是一种二进制文件,扩展名为.sol。不同的SWF影片可以通过.SharedObject类进行读写.sol文件。创建的.sol文件被放置在Flash播放器对应的应用程序数据目录,以Windows为例,目录为:C:\DocumentsandSettings\Administrator\ApplicationData\Macromedia\FlashPlayer\#SharedObjects,在此主目录下使用随机字符命名目录,记录数据。22.3.2向SO上写入数据要实现添加数据到SO上,只需给SO对象的data属性添加属性值。共享对象SO有个内建的属性data,data属性类型为object,因而可以添加任何信息上去。如下面的示例代码所示。//存储username值给so共享对象so.data.username="浪子啸天";注意:既不能直接向SO共享对象赋值,也不能直接向SO共享对象的data属性赋值,这样的结果都是错误的。如下面的两行写入数据的方法都是错误的,错误代码如下所示。so.username="浪子啸天";so.data="浪子啸天";22.3.3读取SO数据要实现在客户端读取SO数据,原理很简单。因为这些持久性数据都保存在共享对象的data属性里,只需要访问Data对象的相关属性就Ok了。下面的示例实现读取SO中储存的数据,代码如下所示。varso:SharedObject=SharedObject.getLocal("test")//将数据写入soso.data.username="浪子啸天"so.data.sex="男"//写入数据so.flush()//读取so中的usernamevaruser=so.data.usernametrace(user)//输出:浪子啸天trace(so.data.sex)//输出:男22.3.4删除保存的SO共享数据要实现删除共享对象中的某个属性值或者删除整个共享对象,需要使用两种不同的方法:用delete删除共享对象的data属性中的值;使用clear()方法清除整个共享对象。下面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电气大数据技术方法
- 勐海事业编招聘2022年考试模拟试题及答案解析18
- 渝西高铁重庆明通牵(一期)220千伏外部供电工程环境影响报告表
- 深南电路招聘考试题及答案
- 热处理考试题库及答案
- 2026年深圳中考语文诗歌鉴赏专项试卷(附答案可下载)
- 2026年深圳中考英语核心素养检测试卷(附答案可下载)
- 2026年深圳中考物理期末综合测评试卷(附答案可下载)
- 广东省汕头市金平区2026年九年级上学期期末物理试题附答案
- 2026年深圳中考生物绿色植物的呼吸作用试卷(附答案可下载)
- 工程制药专业毕业论文
- 2025年冷水机组考试题库及答案
- 超声科工作总结与计划
- 旅居养老策划方案
- T-CRHA 089-2024 成人床旁心电监测护理规程
- DBJ52T 088-2018 贵州省建筑桩基设计与施工技术规程
- 专题15 物质的鉴别、分离、除杂、提纯与共存问题 2024年中考化学真题分类汇编
- 小区房屋维修基金申请范文
- 中职高二家长会课件
- 复方蒲公英注射液在痤疮中的应用研究
- 淮安市2023-2024学年七年级上学期期末历史试卷(含答案解析)
评论
0/150
提交评论