首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flashvars未定义

Flashvars未定义
EN

Stack Overflow用户
提问于 2011-10-25 00:08:01
回答 2查看 1.4K关注 0票数 1

我正在尝试使用flash变量将参数传递给我的swf文件。我正在使用Swfobject嵌入我的swf。但是,我无法访问swf文件中的这些flashvar。我已经有好几个星期的问题了。我已经在互联网上搜索了swfobject的文档,以及其他与此相关的问题。

下面是使用swfobject嵌入swf文件的js代码。

代码语言:javascript
复制
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
flashvars.name1 = "hello";
swfobject.embedSWF("Comics.swf", "myContent", "950", "650","9.0.0","expressInstall.swf", flashvars, flashvars,flashvars);
</script>

下面是用于嵌入的html代码

代码语言:javascript
复制
<div id="myContent"></div>

swf嵌入得很好,并生成以下内容

代码语言:javascript
复制
<object type="application/x-shockwave-flash" name1="hello" data="Comics.swf" width="950" height="650" id="myContent" style="visibility: visible; ">
    <param name="name1" value="hello">
    <param name="flashvars" value="name1=hello">
</object>

同样,swf嵌入得很好。我可以看到内容,但是flashvars似乎是空的。下面是我尝试访问flashvar的flash代码

代码语言:javascript
复制
var flashVars = root.loaderInfo.parameters;
addChild(Util.newLabel("  FlashVars: " + flashVars+" "+root.loaderInfo,0,0,400,100,12,0x0));        


var y=0;
for(var i in flashVars){
    addChild(Util.newLabel("FlashVars:"+i+":"+flashVars[i],0,y+=30,300,100,12,0x0));
}

Util是我制作的一个自定义类,其中newLabel( str :String,x:Number,y:Number,w:Number,h:Number,fontSize:uint,color:uint)是一个方法,它返回一个label组件,其中str作为其文本,x和y作为其位置,w和h作为其尺寸等。我非常确定util的东西可以工作,所以我想知道如何真正加载flashvars?

在运行这段代码时,我应该会看到一个变量名列表。

PS:上面的flash代码是在主时间线中编码的(我使用flash ide编译我的代码),在第一帧中,而Util在一个单独的as文件中。主时间轴中第一帧中的根对象是对象MainTimeline。

如果你需要更多信息,请告诉我。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-02 09:08:54

Flash通过获取URL中的变量或通过flashvars来捕获变量,它们是键/值对。所以基本上,如果你有一个像这样的URL:

代码语言:javascript
复制
http://someurl.com/flashmovie.swf?testVariable=101&testVariable2=tank

testVariable是键,101是值,你可以得到如下的键/值对;

代码语言:javascript
复制
    //creating a textfield for debugging
var _textField:TextField = new TextField();
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.border = true;
addChild(_textField);

//flashvars code
try {
    var valueString:String;
    var keyString:String;
    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
    for (keyString in paramObj) {
        valueString = String(paramObj[keyString]);
        _textField.appendText("\t" + keyString + ":\t" + valueString + "\n");
    }
}catch (error:Error) {
    _textField.appendText(error.toString());
}

希望这能帮上忙,干杯

票数 2
EN

Stack Overflow用户

发布于 2011-10-25 17:39:07

我刚刚设置了一个HTML页面,其中嵌入了一个与您的SWF类似的SWF(实际上,我复制/粘贴了您的代码),然后我在Flash中放入了以下(简单)代码:

代码语言:javascript
复制
import flash.text.TextField;

var myTextField:TextField = new TextField();    

var flashVars = root.loaderInfo.parameters;

myTextField.text = flashVars["name1"]+"!";

addChild(myTextField);

当我打开HTML页面时,我会得到一个漂亮的"hello!“如预期的那样在屏幕上显示。显然,我不能尝试您的标签创建器组件,但代码行是:

代码语言:javascript
复制
addChild(Util.newLabel(flashVars["name1"]+"!",0,0,400,100,12,0x0) );        

如果这不起作用,我会说你在你的Util.newLabel(),中有一些错误我的建议是尝试我的简单版本,看看你是否可以通过这种方式访问flashvars (你应该没有任何问题),然后检查其他东西发生了什么。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7878563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档