【问题标题】:AS3 - Flash Vars How to Get Key Name?AS3 - Flash Vars 如何获取密钥名称?
【发布时间】:2015-07-13 16:53:37
【问题描述】:

我正在查看一些 adobe 文档,http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html,但这完全是错误的。当我通过 this.root.loaderInfo.parameters 为每个执行时,我只能打印出值。我想要闪存变量的实际名称,而不是值。我该怎么做?

var paramObj:Object = this.root.loaderInfo.parameters
            for each (var param:String in paramObj)
            {
                trace("key?: " + param);


                //var valueStr:String = String(paramObj[param]);
                //trace("param" + param + " name: " + valueStr);
            }

上面的代码打印出值。

【问题讨论】:

  • 我认为你应该使用for (var param:String in paramObj) insteaf of for each
  • 一点都没错,你使用'for each' 是为了给你值而不是键。如果您使用“for”,那么您将获得密钥。
  • 哇,谢谢。我从来没有意识到 for each in 和 for in 之间有区别

标签: flash flash-builder flash-cs5 actionscript-3


【解决方案1】:

这完全是错误的。

我不确定您在说什么,这是您提供的链接中的代码:

// AS3
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.border = true;
addChild(tf);

tf.appendText("params:" + "\n");
try {
var keyStr:String;
var valueStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyStr in paramObj) {
valueStr = String(paramObj[keyStr]);
tf.appendText("\t" + keyStr + ":\t" + valueStr + "\n");
}
} catch (error:Error) {
tf.appendText(error.toString());
}

当我通过 this.root.loaderInfo.parameters 为每个执行时,我只能打印出值。

这很可能是示例代码不使用for each in 循环而是使用for in 循环的原因之一。


如果您正在使用示例代码,请尽量坚持使用它。如果您修改了代码并且它不再工作,请不要责怪原始代码。

【讨论】:

  • 谢谢,我什至没有意识到 for each in 和 for in 之间存在差异
【解决方案2】:

这类似于我用来追踪我的 flashVars。

for (var param:String in paramObj)
{
    trace(param + " : " + paramObj[param]);
}

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2011-09-20
    • 1970-01-01
    • 2012-07-02
    • 2023-04-02
    • 1970-01-01
    • 2020-01-14
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多