╋艺 镇╋╋网站网络|程序语言|Flash╋┣◇FLASH交流 → 在网页中将&传递给flash时出现的问题


  共有17360人关注过本帖树形打印复制链接

主题:在网页中将&传递给flash时出现的问题

帅哥哟,离线,有人找我吗?
乐魔舞
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 天之飞雪
等级:青蜂侠 帖子:1427 积分:11370 威望:0 精华:7 注册:2007/12/25 16:21:28
在网页中将&传递给flash时出现的问题  发帖心情 Post By:2010/9/30 10:08:15 [显示全部帖子]

您无权查看精华帖子


  
[本帖被加为精华]
“艺镇”官方站:www.zyzsky.com QQ群:1221854  回到顶部
帅哥哟,离线,有人找我吗?
乐魔舞
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 天之飞雪
等级:青蜂侠 帖子:1427 积分:11370 威望:0 精华:7 注册:2007/12/25 16:21:28
  发帖心情 Post By:2010/9/30 10:19:15 [显示全部帖子]

您无权查看精华帖子


  
[本帖被加为精华]
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
帅哥哟,离线,有人找我吗?
乐魔舞
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 天之飞雪
等级:青蜂侠 帖子:1427 积分:11370 威望:0 精华:7 注册:2007/12/25 16:21:28
  发帖心情 Post By:2010/9/30 14:22:33 [显示全部帖子]

flash接收参数

好好学习flash,以后把学习点滴记录到这里,呵呵,应该是个不错的主意。每天进步一点点。


今天的任务是:已有加载了swf的php页面,需要把页面参数传入swf中,从而动态改变swf的一些属性。


swf怎么接收参数呢?flash使用FlashVars接收html参数。

 

 

FlashVars嵌入HTML的flashobject,代码如下: (网上搜到的例子,有参考价值)


<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="FlashVars" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="FlashVars.swf" />

<param name="FlashVars" value="foo=happy2005&program=flash&language=简体中文-中国" />

<param name="quality" value="high" />

<param name="bgcolor" value="#ffffff" />

<embed src="FlashVars.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="FlashVars" align="middle" allowScriptAccess="sameDomain" FlashVars="foo=happy2005&program=flash&language=简体中文-中国" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

 

通过上面的代码,在SWF(FlashVars.swf)中就可以直接获取foo、program、language变量数据。FlashVars.fla获取FlashVars参数的代码如下:


// 创建三个文本字段

_root.createTextField("foo_txt",1,0,0,16,16);

_root.createTextField("program_txt",2,0,32,16,16);

_root.createTextField("language_txt",3,0,64,16,16);

foo_txt.autoSize = true;

foo_txt.border = true;

program_txt.autoSize = true;

program_txt.border = true;

language_txt.autoSize = true;

language_txt.border = true;

// 获取FlashVars变量

foo_txt.text = "HTML中的foo参数:"+foo;

program_txt.text = "HTML中的program参数:"+program;

language_txt.text = "HTML中的language参数:"+language;


 

这种方法接参数,不难呵,呵呵,继续努力……


原帖地址:

http://www.programbbs.com/doc/5762.htm




  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
帅哥哟,离线,有人找我吗?
乐魔舞
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 天之飞雪
等级:青蜂侠 帖子:1427 积分:11370 威望:0 精华:7 注册:2007/12/25 16:21:28
  发帖心情 Post By:2010/9/30 14:24:59 [显示全部帖子]

HTML网页与FLASH之间的“静态”传值

在论坛上经常看见有新手问到“我想让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里的变量,因为我总觉得怪怪的,呵呵, 个人习惯吧。多多实践,不要觉得这些小东西不起眼,小东西多了,聚结到一起了就是一个大的应用。条条大路通北京,选择你自己喜欢的,自己认为便捷的方式就 可以了,目前我是没有发现这三个方式存在功能上的缺陷。


http://www.chinaz.com/Design/Pages/0605a122007.html
[此贴子已经被作者于2010-9-30 14:28:56编辑过]


  
“艺镇”官方站:www.zyzsky.com QQ群:1221854  回到顶部