我使用Flex 4.6,有一個AIR應用程序getElementByName似乎不工作
我一張有許多標籤的面板。我需要從另一個班級訪問這些標籤。 我不想傳遞所有的標籤對象。所以我想通過面板容器,然後通過getElementByName()方法訪問標籤。
這裏是我的標記:
<s:VGroup includeIn="SLA_textView" width="100%" height="100%"
paddingBottom="10" paddingRight="10">
<s:Panel id="SlaTextViewPanel" width="100%" height="100%"
title="test View">
<s:Label id="lbTotalBooks" name="test" x="82" y="62" />
</s:Panel>
</s:VGroup>
ActionScript代碼如下所示:
getLabels(Container:Panel){
var _Container:Panel = Container;
//var tempLabel:Label = _Container.getChildByName("test") as Label;
var n:int = _Container.numChildren;
for (var i:int = 0; i < n; i++) {
var c:DisplayObject = _Container.getChildAt(i);
trace(c.name);
}
var tempLabel:Label = _Container.getChildByName("test") as Label;
爲什麼tempLabel
總是null
?
所以我試圖循環通過面板上的對象的名稱和測試標籤甚至不顯示?所以我在某個地方出了問題。
跟蹤:
instance1333
PanelSkin1074
你不應該使用像'getChild)與Spark容器的方法(',因爲這個標籤是不是該小組的直接子幕後;你應該使用'getElement()'等。 'name'也是Flash API的遺物。無論如何你爲什麼需要這個?我想不出任何理由。 – RIAstar
我有什麼是從C#返回一個表的Web服務。返回監聽器在類中。所以我需要等待Web服務中的事件完成,然後才能使用數據填充標籤。我不確定是否有更好的方法?我正在尋找另一種管理方式。我將調用移到該類中以使代碼簡單。不知道這一切是否有意義 – Mike