2011-07-11 95 views
1

我使用AS3和獲取圖像的URL從HTML flashVars中創建一個簡單的圖像瀏覽器,倒數Flash變量的數目。我想用一個ifAS3進入if語句

說法有它執行一個功能,如果只有一個Flash變數,另外,如果有更多的。

我把它讀Flash變量罰款,如果整天statments長,我有麻煩計數時使用HTML傳遞

Flash變數

數量可以寫。這裏是什麼,我試圖做的(這不工作

因爲我無法找出正確的過程中遵循)真正的簡單化版本:

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 
} 

感謝您的幫助球員。

克里斯

回答

4

你會想增加numberOfVars

看起來你有這樣的:

numberOfVars + 1; 

當你應該有這樣的:

numberOfVars++; 

這僅僅是一小段路寫這個的:

numberOfVars = numberOfVars + 1; 

或本:

numberOfVars += 1; 
1

我會在這裏提供的條件邏輯略有不同的看法。 基礎上,而不是反應變量有多少(引入很多機會不可預知的結果) - 爲什麼不立足於什麼瓦爾實際上是你的條件語句。這是我的標準Flash變數過程:

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; 
     } 
    } 

顯然,這僅僅是測試一個值的存在,但它可以很容易地改變基於這些結果調用一些功能:

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

我不知道你在努力達到什麼目的,這可能會有些失望。但我想我會附和;)

乾杯!

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;