- 浏览: 200215 次
- 性别:
- 来自: 上海
最新评论
-
zhuzhuaijq:
Flash OBJECT和EMBED标签详解 -
matt.u:
好像有点深奥。
一篇比较好演示AS的重构方法 -
luofeng113:
分析得不错,
flex编程感受 -
felixsky:
请问flexunit如何测试private和internal的 ...
FLEXUnit应用 -
wv1124:
你不能分个页啊,看得人都要死了
Apollo: 开发者问答录
在论坛上经常看见有新手问到“我想让FLASH得到URL中的参数ID号,该怎么办?”“某某视频网站的FLASH播放器是如何播放不同ID的视频的?”...诸如此类问题看到了太多,每次都有一堆回帖,众说纷纭,里面难免有误导性质的回复。今天特结合自己平时工作中使用的心得对此类问题做一个小小的归纳。
我所指的静态传值是区别于与服务端通信进行值传递的方式,例如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里的变量,因为我总觉得怪怪的,呵呵,个人习惯吧。
多多实践,不要觉得这些小东西不起眼,小东西多了,聚结到一起了就是一个大的应用。
条条大路通北京,选择你自己喜欢的,自己认为便捷的方式就可以了,目前我是没有发现这三个方式存在功能上的缺陷。
文章来自: 闪无忧(www.5uflash.com) 详文参考:http://www.5uflash.com/html/flashjiaocheng/Flashyuweb/20080503/3172.html
我所指的静态传值是区别于与服务端通信进行值传递的方式,例如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里的变量,因为我总觉得怪怪的,呵呵,个人习惯吧。
多多实践,不要觉得这些小东西不起眼,小东西多了,聚结到一起了就是一个大的应用。
条条大路通北京,选择你自己喜欢的,自己认为便捷的方式就可以了,目前我是没有发现这三个方式存在功能上的缺陷。
文章来自: 闪无忧(www.5uflash.com) 详文参考:http://www.5uflash.com/html/flashjiaocheng/Flashyuweb/20080503/3172.html
发表评论
-
pv3d学习资料
2009-08-13 14:54 1863官方网站 http://www.papervision3d.c ... -
Flash客户端间的交互
2009-08-13 14:35 3062Flash有着天生非凡的动画和交互能力, 在RIA (富互联网 ... -
ItemRenderer的用法
2009-01-14 13:59 1807项目渲染器(ItemRenderer ... -
Flex3组件拖放教程
2008-08-27 16:27 2488关于组件拖放 可视化的开发环境就是要允许用户能够在屏幕中通过鼠 ... -
基于MVC的Flex framework比较
2008-08-13 10:13 1590关键字: mvc framework 原文出处:[url]h ... -
色彩模式(RGB、CMYK、HSB、Lab、Duotone等)
2008-08-05 13:10 3782色彩是一门很深的学问,每种色彩都有自己的特点和原理。设计师要在 ... -
colormatrixFilter
2008-07-31 12:38 1134http://hi.baidu.com/fmz1206/blo ... -
使用BlazeDS实现Java和Flex通信
2008-06-16 09:21 1048http://blog.chinaunix.net/u/216 ... -
amf是什么东东
2008-06-12 16:59 1347今天我们开发的 J2EE 网 ... -
Flash特效制作常用的源代码大放送
2008-06-06 16:02 1090对象数组 比如要构建一个有很多属性的数组,简单的可以这样 ... -
编写时间轴代码代码规范
2008-06-06 15:34 1158For any major project, you co ... -
关于ApplicationDomain的一些理解
2008-06-05 17:07 2860应用程序域: 允许跨域加载swf后,还可能出现加载的swf中的 ... -
Flash OBJECT和EMBED标签详解
2008-06-05 17:03 31109Flash OBJECT和EMBED标签 一 ... -
flex的一些项目
2008-06-03 14:48 1318一些Flex开源项目的整理 Adobe APIs 主要包 ... -
flex模式(转载)
2008-06-03 14:28 1528[url] http://www.awflasher.com/ ... -
programming Flex2 学习笔记-第5章-框架基础.txt (转载的,来自)
2008-05-29 10:40 1265来自http://blog.chinaunix.net ... -
给DataGrid设置背景色(汇总)
2008-05-27 16:49 5035DataGrid颜色专题 在Flex运用中经常提到的有关 ... -
通过ApplicationDomain类获得被加载应用程序域
2008-05-27 13:32 1637首先先回顾一下FLASH的OO ... -
一些Flex / Flash开源项目
2008-05-09 14:26 1544Adobe APIs 主要包含corelib, ... -
这几个网站是我经常去的,做开发时可以参考
2008-05-09 14:14 1400http://www.flashas.net/ http:// ...
相关推荐
静态html页面传值方式 静态html页面传值方式 静态html页面传值方式
静态传值 ``` 这段代码会在用户点击链接时将参数name及其值caoy附加到index2.html页面的URL上。用户在点击链接后,浏览器会将带有查询参数的URL传递到服务器,服务器随后可以解析这些参数,以获取传递的值。 在...
c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...
静态界面传值插件,第一个界面给第二个界面传值,通过url方式:[removed].href = "Conference_Detail.html?conferenceId='"+conferenceIdByBefore+"'"; 第二个界面获取方式:$.query.get("conferenceId")
"静态画面之间传值的共通"这个标题指的是如何在不使用服务器端处理的情况下,在不同的静态HTML页面之间共享和传递信息。这篇博客(尽管描述为空,但我们可以根据标题推测其内容)可能探讨了在没有动态脚本语言如PHP...
静态页面通常指的是不与服务器交互的纯HTML文件,但有时我们需要在这些页面之间传递信息,这就涉及到了静态页跳转传值的技术。下面我们将详细探讨这个主题。 1. **URL参数传递**: - 最常见的方式是通过URL查询...
以上就是纯HTML页面间传值的常见方法,根据实际需求和兼容性考虑选择合适的技术。在实际开发中,常常结合使用多种方法,以实现更灵活的数据管理。在处理敏感信息时,一定要注意数据的安全性和用户隐私。
在这个"静态页面的传值"主题中,我们将探讨如何在不同的静态HTML页面之间传递信息,主要通过JavaScript实现。 静态页面之间的传值是一个常见的需求,例如在导航链接、表单提交或页面间跳转时。在没有服务器端编程...
在网页开发中,静态页面间传值是一种常见的需求,特别是在多页应用中,用户可能需要在不同的HTML页面之间传递信息,比如导航、购物车状态等。本实例将深入探讨如何在不依赖服务器端处理或者使用JavaScript框架的情况...
标题“winform利用窗体属性实现窗体之间传值”所指的知识点,主要是关于如何通过设置和访问窗体的公共属性来实现在不同窗体间的数据传递。这种技术尤其适用于简单的值传递场景,下面我们将详细探讨这一方法。 首先...
本文将深入探讨"两个Form之间传值Demo"这一主题,讲解如何在C#中实现在不同窗体之间传递数据。 首先,让我们理解窗体间的值传递主要有以下几种方法: 1. **构造函数传递**: 当打开一个新窗体时,可以通过传递...
以上就是WinForm窗体之间传值的常见方法。实际应用中,应根据具体需求选择最适合的方式。在处理过程中,注意数据安全和同步问题,避免因多线程操作导致的数据不一致。同时,尽量保持代码的简洁和可维护性,以便于...
在Web开发中,静态页面之间的数据传递是一个常见的需求,特别是在没有服务器端动态处理的情况下。本教程将详细讲解如何使用jQuery库中的`.param()`方法来实现静态HTML页面间的数据传递,结合提供的`jquery.params.js...
在Web开发中,静态页面HTML之间的跳转传值是非常常见的需求。这种传值方式通常用于不同页面间的简单数据传递,例如用户ID、查询参数等。通过JavaScript处理这些跳转传值可以使得数据传递更加灵活高效。本文将详细...
2. 创建Parcelable的静态内部类Creator:用于反序列化对象。 3. 在源Activity中,使用putExtra()传递Parcelable对象。 4. 在目标Activity中,使用getParcelableExtra()获取并实例化对象。 四、Bundle的使用 除了...
【标题】:“山西旅游网 纯静态HTML 带flash mp3”是一个关于山西省旅游信息展示的网站项目,其特点在于使用了纯静态HTML技术进行构建,并且包含了Flash动画和MP3音频元素。 【描述】:这个描述指出该网站完全基于...
在Web开发中,静态页面之间的数据传递是一个常见的需求,尤其在客户端JavaScript开发中,我们需要了解如何在不同页面间交换信息,以便于实现复杂的用户交互。本文将详细探讨JavaScript静态页面传值的三种方法,并对...
C#窗体传值涉及到多个窗口或控件之间的数据交互,这对于实现应用逻辑和用户界面的联动至关重要。以下是对这个主题的详细阐述: 一、基本概念 在C#中,窗体(Form)是用户界面的主要组成部分,它包含了各种控件,如...