AS3在输入if语句之前计算flashVars的数量

时间:2011-07-11 23:06:06

标签: actionscript-3 loops for-loop each var

我正在使用AS3创建一个简单的图像查看器,并从HTML中的flashVars获取图像URL。我想使用if

如果只有一个flashVar则执行一个函数的参数,如果有更多flashVar则执行另一个函数。

我已经阅读了flashVars,并且可以写一整天的句子,我遇到的麻烦就是计算数字

从HTML传递的flashVars的

。这是我正在尝试做的一个真正愚蠢的版本(它不起作用

因为我无法弄清楚要遵循的正确流程):

var numberOfVars:Number = 0; // to store the number of flashVars
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; //get the flashVars

for each (paramObj in LoaderInfo(this.root.loaderInfo).parameters){
    numberOfVars + 1;
}

var tf:TextField = new TextField();
addChild(tf);
tf.text = numberOfVars.toString(); // this returns '0' when runningn this code


if (numberOfVars < 2){
    //do this
}

else {
    //do this
}

感谢你的帮助。

克里斯

3 个答案:

答案 0 :(得分:4)

你想增加numberOfVars

看起来你有这个:

 numberOfVars + 1;

当你应该这样:

 numberOfVars++;

这只是写这篇文章的简短方法:

 numberOfVars = numberOfVars + 1;

或者这个:

 numberOfVars += 1;

答案 1 :(得分:1)

我将在这里对条件逻辑略有不同。而不是根据有多少对变量作出反应(为不可预测的结果引入大量机会) - 为什么不将条件语句建立在变量实际上的基础上。这是我的标准flashVar流程:

var _loadParams:Object
private function init():void 
    {
        _loadParams = new Object();
        _loadParams = LoaderInfo(stage.loaderInfo).parameters;

        someVar     = String(   parseParam( "someVar", "default value") );
    }

    private function parseParam(name:String, defaultValue:String):String
    {
        if (_loadParams.hasOwnProperty(name) && _loadParams[name] != "" && _loadParams[name] != "undefined") 
        {
            return _loadParams[name];
        }
        else
        {   
            return defaultValue;
        }
    }

这显然只是测试一个值的 presence ,但可以很容易地改变它以根据这些结果调用某些功能:

if (_loadParams.hasOwnProperty(name) && _loadParams[name] != "" && _loadParams[name] != "undefined") 
{               
    switch (name){
        case 'param1':
            doSomthing(name);
            break;
        case 'param2':
            doSomthingElse(name);
            break;
    }
}

我不知道你想要达到的目标,这可能还有一段距离。但我以为我会参与其中;)

干杯!

答案 2 :(得分:1)

只需使用for(key in object)循环即可跟踪root.loaderInfo.parameters上存储的变量数量。

var fvars:Object = root.loaderInfo.parameters;

var n:int = 0;
for(var i:String in fvars) n ++;

// n holds the amount of flashvars
if(n <= 1)
{
    // one or no variables found
}
else
{
    // more than one found
}

另外,你做错了一个操作员:

for each(paramObj in LoaderInfo(this.root.loaderInfo).parameters)
{
    numberOfVars + 1; // <<<<<< here
}

您正在寻找以下其中一项:

numberOfVars ++;
numberOfVars += 1;
numberOfVars = numberOfVars + 1;