2009-04-16 54 views
1

我有一个Flash电影正在用于多个网站。在每个站点上,我想在标记中指定一个不同的XML文件。我如何获取该字符串并在ActionScript中使用它?将字符串从<object>中的html传递到Actionscript

在标记

我想这样做:

<object ... 
    <param name=FlashVars value="urlXML=myXML.xml" /> 
</object> 

在ActionScript 3.0中,我尝试这样做:

var urlXML=_root.urlXML; 

目前,我这样做的时候,我在输出得到一个错误说'访问未定义的属性......'我该如何抓住那个字符串?

+0

这是一个相当常见的错误,当人们移动到AS3。您应该用答案更新问题或编写自己的答案,以便其他找到此条目的人员可以更轻松地找到答案。 或posible使它成为一个维基。 – 2009-04-16 20:08:43

+0

忘记提及swfobject。你应该看看它嵌入你的闪存对象。 http://code.google.com/p/swfobject/ – 2009-04-16 20:10:14

回答

1

这不是你如何访问AS3中的FlashVars。您需要root loaderInfo的参数属性,该属性包含所有加入的FlashVars。


var urlXML: String = root.loaderInfo.parameters.urlXML; 
0

注:Adobe KB article

Flash变数必须在两个对象和嵌入标签的顺序分配到所有的浏览器。

-1

它应该在那里 - 你不需要_root。请参阅this

+0

这是在AS2中。但我找到了解决方案。我需要这行代码: var urlXML = loaderInfo.parameters.urlXML; – AyexeM 2009-04-16 18:57:35

0

我的第一反应......所以这里有云:

我有我的麦吉尔大学校友会开发的一个小视频播放器应用程序。 你可以在这里看到它: http://www.alumni.mcgill.ca/esol/holiday/2008/flash.php?giftCode=123456 它从URL中挑选一个'礼物代码',但你总是可以对你的.xml文件进行硬编码。

这里是对象和嵌入(一个或多个)使用:

<embed src="mcgill_annual_fund200903.swf**?giftCode=<?php echo $giftCode; ?>**" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="680" height="550"></embed> 

并与嵌入的.js脚本:

<script type="text/javascript"> 

AC_FL_RunContent( '代码库', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','宽度','680','height','550','src','mcgill_annual_fund200903 **?giftCode = **','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie' mcgill_annual_fund200903?giftCode =','wmode','transparent'); //结束AC码

然后检索信息在AS3:

//get the giftCode 
var gCode:String; 
var giftCode:String; 
function loaderComplete(lEvent:Event){ 
    gCode = loaderInfo.loaderURL; 
    giftCode = gCode.substr((gCode.indexOf("?giftCode=")+10)); 
    //giftCodeTxt.text= giftCode; 
}