




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Javascript与Flash中的Socket编程交互Flash中的简单概念帧就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 关键帧任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,在Flash中,表示关键状态的帧叫做关键帧。 过渡帧在两个关键帧之间,电脑自动完成过渡画面的帧叫做过渡帧。Flash中的XMLSocket类1.与Socket服务器建立连接调用XMLSocket.connect()方法并监听网络连接的事件消息。该方法有两个参数,host为String类型,值为主机IP或域名,也可以为null,默认为发布该flash的web服务器;port为端口号,没有默认值,最小为1024。如果想突破这个限制需要主机根目录的policy文件。Flash的Socket编程是一个异步的过程,connect方法不会等到一个连接完成后再执行下一代码,因此需要事先准备好一些事件监听器。XMLSocket.onConnect方法用于监听是否成功。Flash在连接到服务器端成功或者失败(包括域认证失败、端口限制或者连接超时以及被服务器主动拒绝等情况)时会给予参数true或者false。请牢记,当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则. 1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接. 2.一个从网上发布的.swf文件是不可以访问本地服务器的. 3.本地未通过认证的.swf文件是不可以访问任何网络资源的. 4.你想跨域访问或者连接低于1024的端口,必须使用一个跨域策略文件. 如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会产生一个securityError事件.这些情况都可以通过使用一个跨域策略文件解决.无论是Socket对象还是XMLSocket对象的策略文件,都必须在连接之前通过使用 flash.system.Security.loadPolicyFile()方法载入策略文件.具体如下: Security.loadPolicyFile(/crossdomain.xml); 获得的改策略文件不仅定义了允许的域名,还定义了端口号.如果你不设置端口号,那么Flash Player默认为80端口(HTTP协议默认端口).在标签中可以使用逗号隔开设置多个端口号.下面这个例子就是允许访问80和110端口. 2. 向Socket服务器发送数据XMLSocket.send(String)发送一个字符串,执行时将该数据包发送到服务器。3.从Socket服务器接收数据Flash会从Socket服务器接收数据,在接收到0时认为服务器本次数据发送结束,然后触发XMLSocket.onData定义的监听器。4.断开连接主动地断开连接: XMLSocket.close( )无论是从客户端主动断开连接还是服务器端主动断开,都会触发socket.onClose定义的监听器。5.flash加载最后,如果有些事情必须等flash加载完成才能做,则要在flash使用 ifFrameLoaded (close)定义的监听器再来看这个flash,它没有外观,高度和宽度都被设定为1它有两个层,第一个层定义了全部的监听方法,源代码如下var host;var port;var data;var socket = new XMLSocket();ifFrameLoaded (close) getURL(javascript:SocketOnInit();/它定义了初始化调用什么js函数socket.onData = function(src)如果是为firefox使用,在这里需要增加一行src=escape(src);原因可能是Adobe Flash插件在与JS交互时对UTF-8编码理解不同,经调试在FF下使用escape函数可达到IE相同的效果getURL(javascript:SocketOnData(+src+);/它定义了接收到以0结尾的数据时触发的事件,src是它的参数,触发js函数时作为SocketOnData函数的参数socket.onConnect = function(success)getURL(javascript:SocketOnConnect(+success+);/定义了连接完成调用的方法,无论是成功或失败,success会被赋值true或false用以在js中调用socket.onClose = function()getURL(javascript:SocketOnClose();/连接结束,调用js的SocketOnclose函数第二层定义了主动行为的一些方法,每帧的脚本都以stop()结束,禁止flash自动播放下去触发不必要的事件。第一帧在第一层播放注册监听器时同时运行,所以没有做任何操作。第二帧书写了连接服务器的方法socket.connect(_root.host,_root.port);stop();第三帧书写了发送数据的方法socket.send(_root.data.toString();stop();第四帧书写了与服务器断开连接的方法socket.close();stop();Flash和Javascript的简单通信在Flash中调用Javascript函数getURL(javascript:SocketOnConnect(+success+);它的原理与在浏览器地址栏输入javascript:alert(1)能弹出1的方法类似在Javascript中调用Flash的函数window.document.socket中的socket,是这个flash的idSetVariable方法为flash中的变量赋值TCallLabel方法调用flash中的帧function SocketConnect(host,port)window.document.socket.SetVariable(host, host);window.document.socket.SetVariable(port, port);window.document.socket.TCallLabel(/, connect );简单的DEMO在线交流的前台大部分功能都是纯JS完成的。DEMO的服务器要感谢叶宝军编译的nc。(nc是一个网络调试工具,有网络中的瑞士军刀之美称。有一个功能是监听某个端口,回显连接者的输入,并使用终端向客户端输出字符串。叶宝军将源代码中向客户端输出字符串时最后的n替换成0)前台大部分功能都是Javascript完成的包括初始化时连接服务器、发送接收数据、错误处理、键盘事件处理 等再谈flash调用javascriptFlash调用页面中的javascript函数在做一些flash操作页面DOM的应用的时候很有用,在flash actionscript中调用javascript中的函数方法有两个:1 getURL(” javascript:alert(1)”) 实际上的原理相当于HTML中的调用javascript的方式,相当于一个对本页的一个http请求。下面是在Flash帮助文档中对getUrl函数的说明:getURL(url:String, window:String, method:String) : Void参数:url:String 可从该处获取文档的 URL。window:String 可选 指定应将文档加载到其中的窗口或 HTML 帧。您可输入特定窗口的名称,或从下面的保留目标名称中选择:_self 指定当前窗口中的当前帧。 _blank 指定一个新窗口。 _parent 指定当前帧的父级。 _top 指定当前窗口中的顶级帧。 method:String 可选 用于发送变量的 GET 或 POST 方法。如果没有变量,则省略此参数。GET 方法将变量附加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送长字符串的变量。(请注意,当使用 getURL() 调用 JavaScript 时,url 参数最多只能包含 508 个字符):Onbeforeunload事件ifFrameLoaded (close) getURL(javascript:SocketOnInit();2 FSCommand(”alert”,1);原理类似于HTML中,相当于直接调用。如果你想使用FSCommand,那么你需要为IE浏览器加入VB Script代码来捕获fscommand命令,Sub socket_FSCommand(ByVal command, ByVal args)call socket_DoFSCommand(command, args)end sub然后把它传递给JavaScriptfunction socket_DoFSCommand(command, args) if (command = SocketOnData) SocketOnData(args); else if(command = SocketOnInit)SocketOnInit();else if(command = SocketOnConnect)SocketOnConnect(args);else if(command = SocketOnClose)SocketOnClose();有一点需要注意的是 socket 应该是你在OBJECT 和EMBED标记为你的影片起的名字。对于JavaScript的一点解释。“socket_DoFSCommand”函数随时调用名称为“socket”的发送fscommand命令的影片。“DoFSCommand” 关键字是Flash用来识别的函数,该函数被fscommand命令加载。前缀“socket_”指出被命令调用的影片的名称。因此,当一个名为“socket”的影片调用FS Command命令时,名为“socket_DoFSCommand”的函数将被加载。关于ExternalInterface类ExternalInterface 类是外部 API(在 ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口);例如,含有 JavaScript 的 HTML 页或嵌入 Flash Player 的桌面应用程序。ExternalInterface 在功能上与 fscommand()、CallFrame() 和 CallLabel() 方法相似,但它更灵活、更通用。推荐对 JavaScript 和 ActionScript 之间的通讯使用 ExternalInterface。从 ActionScript 中,您可以在 HTML 页上调用任何 JavaScript 功能,传递任何数据类型的任意数量的参数,并接收来自该调用的返回值。从 HTML 页上的 JavaScript 中,可以调用 Flash Player 中的 ActionScript 函数。ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。例如:在AS中/导入ExternalInterface类import flash.external.ExternalInterface;/下面这个赋值一定要注意,如果是字符串,写法应该是在双引内再加单引 var i:String = js调用flash中的方法,传递flash变量给js;function showAlert()/调用js方法jsAlert(),并将flash变量赋值给jsExternalInterface.call(jsAlert(+i+);/允许js中的flAlert()调用flash中的showAlert()ExternalInterface.addCallback(flAlert,null,showAlert);以下为JS:/输出测试,通过v传递flash变量function jsAlert(v)alert(v);/调用flash中的方法,my_mv为html页中swf的idfunction callExternal()thisMovie(my_mv).flAlert();/搭建js与flash互通的环境function thisMovie(movieName)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 难点解析-公务员考试《常识》专题测评练习题
- 网络游戏玩家体验提升及运营策略研究
- 辽宁省交通运输事务服务中心面向部分高校2025应届毕业生招聘笔试模拟试题及参考答案详解一套
- 2025年事业单位笔试-四川-四川中医康复学(医疗招聘)历年参考题库典型考点含答案解析
- 糖尿病性ED防治-洞察及研究
- 2025年事业单位工勤技能-黑龙江-黑龙江图书资料员五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-重庆-重庆农业技术员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-福建-福建政务服务办事员一级(高级技师)历年参考题库含答案解析
- 人教版(2024)七年级下册英语期末专项训练卷-阅读理解(含答案)
- 语文苏教版选修《史记选读》练习项羽本纪演练
- 2025年秋季开学第一次全体中层班子会议上校长精彩讲话:把小事做细、把细事做实、把实事做好
- 2025-2030中国物流园区自动化技术应用与智慧化改造趋势报告
- 2025年人武专干军事考试题库及答案
- 【G1工业锅炉司炉】理论考试题及答案
- 记账实操-酿酒企业的账务处理
- 2025版个体户灵活用工劳动合同范本
- 2025年小学体育教师招聘教材教法考试试题及答案
- 招标代理机构从业人员考试模拟试题及答案
- 湘教版分式的乘法和除法教案
- 跌水水力计算(水工结构版)
- 七年级英语下册阅读理解练习题30篇
评论
0/150
提交评论