Flashvars 未定义

Posted

技术标签:

【中文标题】Flashvars 未定义【英文标题】:Flashvars is undefined 【发布时间】:2011-12-14 06:44:39 【问题描述】:

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

这是我使用 swfobject 嵌入 swf 文件的 js 代码。

<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 代码

<div id="myContent"></div>

swf 嵌入良好并产生以下内容

<object type="application/x-shockwave-flash" name1="hello" data="Comics.swf"   id="myContent" style="visibility: visible; ">
    <param name="name1" value="hello">
    <param name="flashvars" value="name1=hello">
</object>

同样,swf 嵌入良好。我可以看到内容,但 flashvars 似乎为空。 这是我尝试访问 flashvars 的 flash 代码

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) 是一个返回标签组件的方法str 作为它的文本,x 和 y 作为它的位置,w 和 h 作为它的尺寸等等。我很确定 util 的东西可以工作,所以我想知道我如何真正加载 flashvars?

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

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

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

【问题讨论】:

你的参数应该在 flashVars["name1"] 我试过了,但我仍然不确定:( 【参考方案1】:

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

http://someurl.com/flashmovie.swf?testVariable=101&testVariable2=tank

testVariable 是键,101 是值,您可以得到这些键/值对,如下所示;

    //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】:

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

import flash.text.TextField;

var myTextField:TextField = new TextField();    

var flashVars = root.loaderInfo.parameters;

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

addChild(myTextField);

当我打开 HTML 页面时,我得到一个很好的“你好!”如预期的那样在屏幕上。显然我无法尝试您的标签创建器组件,但该行将是:

addChild(Util.newLabel(flashVars["name1"]+"!",0,0,400,100,12,0x0) );        

如果这不起作用,我会说您的 Util.newLabel() 内部存在某种错误,我的建议是尝试我的简单版本,看看您是否可以访问以这种方式 flashvars(你不应该有任何问题),然后检查其他东西的情况。

希望这会有所帮助!

【讨论】:

以上是关于Flashvars 未定义的主要内容,如果未能解决你的问题,请参考以下文章

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP

idea thymeleaf 变量未定义

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP