我所指的静态传值是区别于与服务端通信进行值传递的方式,例如LoadVars,XML,Remoting之类,后者暂且不在本文的讨论范围内,当你想让FLASH获取URL中的参数时,你为何不换个角度想了?其实我们可以让服务端动态生成SWF的的插入代码,主动将我们需要的参数“静态”传递给FLASH,FLASH直接用就可以了,根本不需要自己去拿,而以何种形式传递给FLASH,就是我所指的静态传值。我知道的可行的HTML与 FLASH之间的静态传值方法有三种:
SWF地址后使用参数传递符“?”
FlashVars传递
JS控制
下面来具体介绍下这三种方式的传递是如何工作的:
一、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.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="demo.swf?uid=12&uname=vsky" />
<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
<embed src="demo.swf?uid=12&uname=vsky" quality="high" bgcolor="#ffffff" width="400" height="300" name="flashvars" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
其中粗体部分对应的就是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.cab#version=8,0,0,0" width="400" height="300" id="flashvars" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="demo.swf" />
<param name="FlashVars" value="uid=12&uname=vsky" />
<param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
<embed src="demo.swf" FlashVars="uid=12&uname=vsky" quality="high" bgcolor="#ffffff" width="400" height="300" name="flashvars" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
跟方式一相同,它也是直接给FLASH里添加了这两个变量。但我个人推荐使用此方式,结合SWFObject的使用,使用FlashVars来传递变量有很多好处,例如代码清晰,容易管理,浏览其兼容,符合标准。他们的结合使用在“为FLASH程序构造灵活的接口”一文中我已经做了介绍(PS:随后我会提供一个复杂点的、有说服力的实际应用来说明这种灵活接口的使用)。
三、JS控制
对于客户端页面中的资源,JS通过DOM结构来控制它们可以说是随心所欲的,FLASH也不例外,下面是Flash Player的Javascript方法一览表:
Play() —————————————- 播放动画
StopPlay()————————————停止动画
IsPlaying()———————————– 动画是否正在播放
GotoFrame(frame_number)—————- 跳转到某帧
TotalFrames()——————————- 获取动画总帧数
CurrentFrame()——————————回传当前动画所在帧数-1
Rewind()————————————-使动画返回第一帧
SetZoomRect(left,top,right,buttom)——-放大指定区域
Zoom(percent)——————————改变动画大小
Pan(x_position,y_position,unit)————使动画在x,y方向上平移
PercentLoaded()—————————-返回动画被载入的百分比
LoadMovie(level_number,path)———– 加载动画
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)—— movie_clip跳转到指定标签
TCurrentFrame(movie_clip)————— 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)—————–回传movie_clip当前标签
TPlay(movie_clip)—————————播放movie_clip
TStopPlay(movie_clip)———————-停止movie_clip的播放
GetVariable(variable_name)—————–获取变量
SetVariable(variable_name,value)———–变量赋值
TCallFrame(movie_clip,frame_number)—call指定帧上的action
TCallLabel(movie_clip,label)—————-call指定标签上的action
TGetProperty(movie_clip,property)——–获取movie_clip的指定属性
TSetProperty(movie_clip,property,number)———-设置movie_clip的指定属性
在这里我们只需要使用的是粗体标识的SetVariable方法,JS通过调用此方法能够直接更改SWF中的变量值。首先我们需要定义插入的SWF的 ID,例如id为VskyDemo,那么我们可以通过下面的JS语句来完成SWF内部变量的设置: window.document.VskyDemo.SetVariable("uid", 12);
很简单吧,就是这样的。除非是涉及到了HTML中SWF之外元素跟它交互,否则我一般不使用JS来控制SWF里的变量,因为我总觉得怪怪的,呵呵,个人习惯吧。多多实践,不要觉得这些小东西不起眼,小东西多了,聚结到一起了就是一个大的应用。条条大路通北京,选择你自己喜欢的,自己认为便捷的方式就可以了,目前我是没有发现这三个方式存在功能上的缺陷
[转载]
分享到:
相关推荐
静态html页面传值方式 静态html页面传值方式 静态html页面传值方式
静态页面通常指的是不与服务器交互的纯HTML文件,但有时我们需要在这些页面之间传递信息,这就涉及到了静态页跳转传值的技术。下面我们将详细探讨这个主题。 1. **URL参数传递**: - 最常见的方式是通过URL查询...
静态传值 ``` 这段代码会在用户点击链接时将参数name及其值caoy附加到index2.html页面的URL上。用户在点击链接后,浏览器会将带有查询参数的URL传递到服务器,服务器随后可以解析这些参数,以获取传递的值。 在...
c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...
纯静态HTML网页模板是网页设计中常见的一种方式,它不依赖服务器端的脚本语言(如PHP、ASP、JSP等)进行动态处理,而是直接由HTML、CSS和JavaScript等前端技术构建完成。这种模板主要由HTML文件、样式表文件(CSS)...
"静态画面之间传值的共通"这个标题指的是如何在不使用服务器端处理的情况下,在不同的静态HTML页面之间共享和传递信息。这篇博客(尽管描述为空,但我们可以根据标题推测其内容)可能探讨了在没有动态脚本语言如PHP...
学习和使用这样的纯静态HTML网页模板,可以帮助大学生了解Web开发的基本流程,理解前端技术的三大核心——HTML、CSS和JavaScript之间的关系。此外,还可以通过修改模板来实践网页设计,增强对响应式布局、移动优先...
静态界面传值插件,第一个界面给第二个界面传值,通过url方式:[removed].href = "Conference_Detail.html?conferenceId='"+conferenceIdByBefore+"'"; 第二个界面获取方式:$.query.get("conferenceId")
大学生静态网页设计期末作业蛋糕店主题静态网页大作业html源码。 网页设计期末大作业,静态网页,HTML,大学生期末必过项目,95分以上,代码含有注释,亲自操作就可以搞定期末作业啦 大学生静态网页设计期末作业...
在这个压缩包中,包含的是一些静态HTML网页的代码,这意味着我们可以直接打开这些文件来查看和运行它们,无需服务器支持。 在HTML网页中,主要由一系列的标签组成,这些标签定义了网页的各个部分。例如,`<html>`...
在Activity与Fragment之间进行传值主要有以下几种方法: 1. **通过Intent传递数据**: - 如果从Activity启动一个新的Fragment,我们可以通过Intent将数据传递给Fragment。在创建Fragment实例时,可以使用Bundle...
在这个"静态页面的传值"主题中,我们将探讨如何在不同的静态HTML页面之间传递信息,主要通过JavaScript实现。 静态页面之间的传值是一个常见的需求,例如在导航链接、表单提交或页面间跳转时。在没有服务器端编程...
这样的网页在客户端浏览器加载时,不会与服务器进行交互,而是直接展示存储在HTML文件中的内容。这种方式对于小型网站、个人博客或者快速原型设计非常适用,因为它简单、快速且易于维护。 在这个压缩包中,我们可以...
HTML静态网页模板是网页设计中常见的一种资源,它是由HTML、CSS和JavaScript等技术构建的预设布局和设计。这些模板通常包含多个页面,如首页、关于我们、联系我们、产品展示等,为创建网站提供了一个快速而高效的...
html静态页面源代码 静态网页制作代码【CSS+DIV】 HTML静态页面(CSS+DIV) 这是期末老师HTML老师布置的。本来要求一个,但我做了三个。 主要是CSS+DIV做的(3个项目)。 对于页面的布局,代码的规格,命名,都很清晰...
前端 html 静态网页模板 大学生web学习可用
静态网页设计期末作业二十四节气HTML静态网页源码。期末作业高分项目、95分项目。静态网页设计大作业。 静态网页设计期末作业二十四节气HTML静态网页源码。期末作业高分项目、95分项目。静态网页设计大作业。静态...
在这个“html个人博客的静态网页”压缩包中,包含了一个已经设计完成的个人博客的静态页面。静态网页意味着页面内容在服务器端不进行动态生成,而是以固定的HTML文件形式存在,当用户请求时,服务器直接发送这些文件...
在"html静态网页"这个项目中,我们可以理解为开发者仅使用了HTML来定义网页的结构,并通过CSS来控制网页的布局和视觉表现。由于描述中提到“没有数据库连接”,这意味着这个网页不是动态的,不会根据用户交互或...
HTML静态网页模板是一种用于快速构建网站的预设计布局,它由HTML、CSS和有时包括JavaScript等前端技术组成。这些模板通常包含多个页面结构,如首页、关于我们、联系我们、产品展示等,以及各种组件,如导航栏、轮播...