2011-08-24 52 views

回答

0

除非您打算以某種方式記錄它們,否則我認爲最好的方法可能是對顯示列表進行遞歸尋找該類的實例。例如:

// Necessary imports 
import flash.display.DisplayObjectContainer; 
import flash.display.DisplayObject; 
import fl.controls.TextInput; 


function disableAllInputs(container : DisplayObjectContainer) : void 
{ 
    var i : uint; 
    for (i=0; i<container.numChildren; i++) { 
     var child : DisplayObject = container.getChildAt(i); 
     if (child is TextInput) {      // Proper class here 
      var input : TextInput = TextInput(child); // and here 
      // Disable focus and setStyle here 
     } 
     else if (child is DisplayObjectContainer) { 
      // Recurse 
      disableAllInputs(child as DisplayObjectContainer); 
     } 
    } 
} 

這將遍歷所提供的容器的所有子節點並檢查它們是否是輸入。如果是,可以在適當的if語句中爲它們執行所需的代碼。但是,如果它們是其他容器,它也會遞歸併循環通過該容器的子項。

我不確定文本輸入組件的類名是什麼,但我認爲它只是TextInput。如果沒有,只需在上面的源代碼中標記的名稱替換。

+0

當我嘗試實現此代碼時,Flash返回錯誤。它無法訪問TextInputs。有沒有像「TextInput.prototype」更容易? – Bayu

+0

它返回的錯誤是什麼?如果你指定了錯誤,那很可能是一個簡單的修復。你有沒有導入fl.controls.TextInput類? – richardolsson

+0

對不起,延遲迴復,我無法瀏覽2天。我忘記了錯誤,我想這是關於Flash無法找到顯示對象實例。我沒有導入「fl.controls.TextInput」類,因爲我從組件框中拖動組件。沒關係,我使用「for循環」來設置和禁用所有TextInput的焦點矩形。這種方式很麻煩,因爲我必須將它添加到每個包含TextInputs的MovieClip中。所以如果我可以通過使用「prototype」屬性來設置所有TextInput的樣式會更好。謝謝您的回覆。 – Bayu