
HTML网页与FLASH之间的静态传值(1) |
在论坛上经常看见有新手问到“我想让FLASH得到URL中的参数ID号,该怎么办?”“某某视频网站的FLASH播放器是如何播放不同ID的视频的?”...诸如此类问题看到了太多,每次都有一堆回帖,众说纷纭,里面难免有误导性质的回复。今天特结合自己平时工作中使用的心得对此类问题做一个小小的归纳。 我所指的静态传值是区别于与服务端通信进行值传递的方式,例如LoadVars,XML,Remoting之类,后者暂且不在本文的讨论范围内,当你想让FLASH获取URL中的参数时,你为何不换个角度想了?其实我们可以让服务端动态生成SWF的的插入代码,主动将我们需要的参数“静态”传递给FLASH,FLASH直接用就可以了,根本不需要自己去拿,而以何种形式传递给FLASH,就是我所指的静态传值。我知道的可行的Html与FLASH之间的静态传值方法有三种: SWF地址后使用参数传递符“?” 下面来具体介绍下这三种方式的传递是如何工作的: 一、SWF地址后使用参数传递符“?” 我们知道,在ULR地址中使用参数传递符“?”可以以GET方式传递参数,例如http://www.v-sky.com?uid=12&uname=vsky,这里使用了参数传递符“?”,同时使用了连接符“&”做为变量分隔标识,以这种规范的格式来传递两个参数:uid=12和uname=vsky,那么服务端可以使用GET方式获取这两个值。 在FLASH中我们同样可以采用类似的方式来传递参数,HTML页面中插入SWF文件最常用的就是使用Object标签和Embed标签结合的方式,这也是Adobe的推荐方式: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash 其中粗体部分对应的就是SWF文件的地址,那么我们可以在这个地址后面通过类似于URL中GET方式传参的方法来个SWF传递参数,例如上面代码在页面完全加载完毕时,它已经给SWF文件写入了两个变量:uid=12和uname=vsky。 二、FlashVars传递 你可以查阅FLASH帮助文档来看FlashVars的官方定义。其实在HTML语法中,这是一个被很多新手所忽视的属性,同样以上面的参数为例,下面用FlashVars来传递变量: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash <param name="allowScriptAccess" value="sameDomain" /> |