【问题标题】:How to get multiple Flashvars variables into Flash (not using swfobject)如何将多个 Flashvars 变量放入 Flash(不使用 swfobject)
【发布时间】:2011-03-06 21:52:52
【问题描述】:

我正在为我的客户重建这个可嵌入播放器,视频文件 URL 和其他几个变量在 HTML 中作为 Flashvars。我怀疑查找 flashvar 的代码有问题。

显示绿色框的顶部是播放器未加载的位置,因为它无法从 HTML 中获取 Flashvar。下面的播放器将 Flashvars 字符串硬编码到播放器中,因此可以正常工作。

我认为问题出在下面的某个地方 也许我尝试引入 Flashvar 的方式有问题?

// LIVE Embedded
   //vidURL = stage.loaderInfo.parameters.fvar;
   vidURL = this.loaderInfo.parameters.fvar;            

   fvarText.text = "vidURL = this.loaderInfo.parameters.fvar"

   vidSplit = vidURL.split(".flv")[0].split("/");
   varVid   = vidURL.toLowerCase().split("&vid=")[1].split("&")[0];
   varChid  = vidURL.toLowerCase().split("&chid=")[1].split("&")[0];

// Hardcode Testing 
//(This creates the player that works at the bottom of the test page)
   /*vidURL   = "http://";
   vidSplit = vidURL.split(".flv")[0].split("/");
   varVid   = vidURL.toLowerCase().split("&vid=")[1].split("&")[0];
   varChid  = vidURL.toLowerCase().split("&chid


我从 Flash 导出时收到此错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.Player::Embed/init()
at com.Player::Embed()

我预计会出现此错误,因为显然 Flash 尚未嵌入,但此错误能否说明为什么我的播放器无法获取 FlashVars 链接然后呈现自身?

HTML 嵌入代码:

<object width="640" height="395" border="0">
<param name="flashvars" value="fvar=http://360.flv&amp;VID=1273&amp;CHID=4" />
<embed src="http://dev.site.com/flash.swf" width="640" height="395" flashvars="fvar=http://360.flv&amp;VID=1273&amp;CHID=4">
</embed>
</object>

【问题讨论】:

  • 尝试在嵌入和对象标签中设置 flashvars。我认为有些浏览器使用对象标签,而其他浏览器使用嵌入。您在任何浏览器中都得到任何变量吗?
  • hmm 我现在将它添加到对象中,我目前只在 Mac 上的 Safari 中测试过,感谢您的反馈!

标签: flash actionscript-3 embed flashvars


【解决方案1】:

您需要在对象和嵌入标签中设置 flashVars 参数。看看这个链接http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_3.html

<object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>
        <param name='src' value='FlashVarTest.swf'/>
        <param name='flashVars' value='firstName=Nick&lastName=Danger'/>
        <embed name='mySwf' src='FlashVarTest.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='firstName=Nick&lastName=Danger'/>
    </object>

在 Flash 中获取值。使用这个:

var firstName:String = stage.loaderInfo.parameters.firstName;
var lastName:String = stage.loaderInfo.parameters.lastName;

【讨论】:

  • 我刚才试过了,同时使用了你的代码和 dana 的......我认为问题仍然与试图拿起 Flashvar 的动作脚本有关:/ 使用 Flash 而不是 Flex btw
  • 用适合我的 AS3 代码更新了答案。看看能不能解决问题。
  • 谢谢阿比纳夫!我试图获取其他 2 个变量的方式是问题所在:) 但是你的方式有效!
【解决方案2】:

就像 George 说的,您可以尝试对 and 标记使用 flashvars。此外,我引用了我的属性值并转义了我的与号 (&)。以下代码应该可以工作:

<object width="640" height="395" border="0">
    <param name="flashvars" value="file=http://how.llnwd.net/o18/UpDo_H_828-640x360.flv&amp;VID=1273&amp;CHID=4" />
    <embed src="http://dev.site.com/flash.swf" width="640" height="395" flashvars="file=http://how.llnwd.net/o18/UpDo_H_828-640x360.flv&amp;VID=1273&amp;CHID=4">
    </embed>
</object>

【讨论】:

  • 谢谢,但播放器仍然无法渲染,我的 Flash 代码看起来正确吗?
  • 好的,这里有几件事。首先,您的 flash 代码不应该拆分 flashvars 字符串。根据您使用的 flash 版本,您可以通过不同的方式获取 flashvars 对象。例如,在 AS3 中,您将执行以下操作: var x:String = LoaderInfo(this.root.loaderInfo).x; var y:String = LoaderInfo(this.root.loaderInfo).y; var z:String = LoaderInfo(this.root.loaderInfo).z;此外,请尝试将正斜杠 (/) 替换为 %2f。例如:http:%2f%2fhowtoevery... 不确定这是否会有所帮助,但可能吗?
  • 我希望我能检查你和 Abinav,但至少要投票:D 谢谢!
猜你喜欢
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多