我正在使用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
}
感谢你的帮助。
克里斯
答案 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;