多个自定义组件和显示列表

时间:2011-10-18 19:21:52

标签: flash actionscript-3 flash-cs4

我在同一个SWF上使用相同自定义组件的多个实例。该组件基本上只是一个具有特殊大小要求的文本字段。我还有另一个“包装器”组件,它处理来自textfield组件的信息。我最初计划使用阶段索引将数据与它来自的文本域组件相关联。这比我预想的要复杂得多。  当我从包装器中追踪时,我无法获得文本域组件的索引。所以我在组件代码中得到了它,并通过自定义事件将信息发送给包装器。问题在于我无法分辨哪个组件是哪个组件,因为它们的索引相同。我还可以看到组件垫片以及textfield。我真的很困惑程序化组件如何在显示列表上工作。

我的主要问题。有没有更好的方法将信息与适当的组件相关联? 我猜这是我唯一的问题。请指出我正确的方向。

编辑:我忘了添加我的组件需要被拖到舞台上。非常感谢您的答案,但它只适用于以编程方式添加组件。任何帮助将不胜感激。即使它只是一个可能的解决方案或信息的链接,将帮助我解决它。再次感谢。

EDIT2:我创建了一个虚拟的占位符组件,它只绘制一个矩形,然后在运行时用程序生成的文本域组件替换它。非常感谢所有帮助我解决这个问题的人。如果我想出更好的东西,我会更新。

1 个答案:

答案 0 :(得分:1)

您可以为每个TextField指定一个唯一的名称,如下所示:

for(var i:int = 0; i < n; i++)
{
    var txt:TextField = new MyCustomTextField();
    txt.name = "txt_" + i.toString();
    stage.addChild(txt);
}

例如txt[99] = stage.getChildByName("txt_" + 99);

...或者您可以使用数组或向量来保存对每个TextField的引用。