2011-02-09 57 views
0

嘿, 我對我正在處理的一些Actionscript有點困惑。對於我的GUI,我已經爲計算髮生的時間寫了四個函數。這些是showMessage(「加載文本...」),disableButtons(),clearMessage()和enableButtons()。他們在整個項目中都表現出色。 ShowMessage顯示加載消息,disableButtons禁用按鈕,因此無人可以點擊任何內容,clearMessage在作業完成時清除加載消息,並且enableButtons將它們全部重新打開。不知道爲什麼我的程序似乎跳過一些功能?

出於某種原因,有一個按鈕點擊處理程序,這給我麻煩,我不知道爲什麼。我已經把它設置成與其他類似的(它們都可以工作),但是這個不顯示消息或關閉我的按鈕。這是我的clickHandler事件...

private function Buffer_Route_clickHandler():void 
     { 
      showMessage("Loading RBE Options"); 
      disableButtons(); 

      if(Buffer_Route.selected && rbeAC.length == 0){ 
       createRbeAC(); 
      } 
     } 

這裏是creatRbeAC功能...

private function createRbeAC():void 
{    
    rbeAC.removeAll(); 
    hiddenRBELayers.removeAll(); 

    var rbeIDs:Array = rbeConfigList.getKeySet(); 
    for each (var rbeID:int in rbeIDs) 
    { 
      var rbeConfig:Hashtable = rbeConfigList.find(rbeID) as Hashtable; 
     var rbeData:Object = 
     { 
      restURL:rbeConfig.find("rbeRESTURL") as String, 
      layername:rbeConfig.find("rbeLayerName") as String, 
      icon: rbeConfig.find("rbeIcon") as String, 
      titlefield: rbeConfig.find("rbeTitleField") as String, 
      checked: rbeConfig.find("rbeChecked") as String, 
      count: "0" as String 
     };     
     if(rbeData.checked == "false") 
     {     
      hiddenRBELayers.addItem(rbeData.layername);// as String); 
     } 
     rbeAC.addItem(rbeData);   
    } 
} 

我沒有得到任何加載文本,所以我從拿出我clearMessage和enableButtons功能代碼來查看它是否添加了消息並禁用了按鈕。我仍然沒有得到任何東西。由於clearMessage和enableButtons無法在這個按鈕中找到Click處理函數或creatRbeAC函數,因此我不明白爲什麼加載消息和按鈕沒有被禁用,即使計算完成。

有些事情要注意。如果我註釋掉creatRbeAC函數,則會顯示加載消息並且按鈕會禁用。就好像這些函數在代碼中的creatRbeAC函數被忽略時一樣。

任何幫助?我將不勝感激。希望我已經提供了足夠的信息。

回答

0

在我的實際應用程序中,我有類似的問題。 在我的事件處理程序中(沒有關係,如果有按鈕處理程序或鼠標處理程序),我也不想禁用該應用程序併爲我的arrayCollection使用一些過濾器函數。

不幸的是,這個動作似乎需要太多的資源,特別是當應用程序在調試模式下運行時。我必須爲下一次刷新刷新感到刺痛。所以我嘗試在我的事件處理程序中實現「applyFilterMethod」,但是它也不能工作。

Finally, the setTimeOut(applyFilterMethod,500) 

解決了我的問題。所以,如果你有運氣,用超時方法嘗試一下。

BR Frank

相關問題