永发信息网

如何用url传递变量给swf

答案:2  悬赏:0  手机版
解决时间 2021-04-16 02:05

我是想作出的效果是 www.***********.com/123.htm?a=dfg&d=fert&c=dfdf

在这个页面中的一个flsh如果能得到这个url传递过来的变量a=dfg  d=fert c=dfdf

这是一个歌曲播放页面 上面几个变量是歌曲的变量 我想同时用这几个变量来控制flash中所载入的图片 这样就可以在播放这首歌曲的同时这个动画中就能显示出和这首歌曲相关(演唱者歌者海报)的图片了

要说明的是我的歌曲站是全静态站

如果答案满意的话我可以给加分

对与动画我只懂一点点 希望尽量详细些 谢谢了

最佳答案

ActionScript3.0 页面给swf文件传值接受


以往as2.0通过web传递参数给swf
只需swf声明一个变量,如: var par:String;
WEB传递参数方式可以按如下方式: a.swf?par=aabbccc
这样子swf就能取得到web传递的参数值。

as3.0改变了些方式,要取得web传递的参数需要使用loaderInfo.parameters[]方法。

如:web传递参数为: a.swf?n=benblog.cn
swf 可先声明一个变量
var id:String;
id = loaderInfo.parameters["n"]; //parameters["n"] 中 n为web的参数名。



HTML与Flash传值的HTML方法


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

全部回答
在主场景中直接使用就行。 如果URL变量如.swf?bl="sample"。 这样主场景中的_root.bl="sample"。 以下是我用过的类似的例子,你可以看看,as我都没加密,你自己反编译一下就行了,写的不好,莫见笑。 例如(引用地址栏变量,bg_color及pk_id是变量名字) http://www.douremi.com/pk/pk.swf?bg_color=FFFFF3&pk_id=31 例如(引用swf文件后面的变量,side_menu_2.swf?defaultNum=1) http://www.anshancc.com/sshBoard/List.asp?BBID=2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
关于日机的问题 AU
谁有坚强的意志力名人故事?急用!!!
描写白鹭捕鱼的诗句,白鹭鸟天黑能捕鱼吃的么?
古典鸡饭店地址有知道的么?有点事想过去
把地址赋给s=&t 和*s=&t有
我要开门市卖蛋糕,两边贴什么标语好?
你愿意找人一起死去么?
在枫红落叶的季节里!爱上你飘忽的心(帮解下
中行信用卡逾期不还怎么收取费用
人活着的时候对别人很凶死了会不会变厉鬼去报
老公姓李本人姓邵取复姓
板那尖山我想知道这个在什么地方
关于行货刷机
中牟县郑州优力克汉堡地址在哪,我要去那里
有荣昌到遵义约长途客车吗
推荐资讯
办B2驾照过二十生日,到二十一岁时但生日晚能
十一月十六号来月经二十三号停,哪天是危险期
送给爱计较的人的句子,受不了我同事们了,一
高三毕业班教师寄语,高三物理老师教师寄语
猪脚吃哪个地方补奶
从闸北长安路到松江,坐什么车
在哪下载qq2009lite版
含不安的成语是什么,含有说的意思的成语有哪
华容土菜馆这个地址在什么地方,我要处理点事
深圳和东莞的交通规则有何不同?
我买了两份的米线没吃完,想留到下顿吃,想知
星际战甲段位怎么升级 星球如何开启
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?