0

Flex 4.6 を使用しており、AIR アプリケーションを持っています。

多くのラベルが付いたパネルがあります。これらのラベルに別のクラスからアクセスする必要があります。すべてのラベル オブジェクトを渡したくありません。そこで、パネル コンテナーを渡してから、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
4

2 に答える 2

0

いつ、どこでgetLabelsメソッドを呼び出しますか? ラベルが作成されていても、まだ初期化されていない可能性があります。

于 2012-10-26T09:03:33.817 に答える
0

次のようなものを使用できます。

var element:Group = "searchId" in this ? this["searchId"] as Group : null;
于 2017-06-30T14:05:40.860 に答える