【问题标题】:AS3 - Best method for dynamically creating a series of text fields?AS3 - 动态创建一系列文本字段的最佳方法?
【发布时间】:2015-07-08 21:52:57
【问题描述】:

我(成功地)通过循环创建了一列盒子,其内容是:

for(var i=0; i  < MAX_ROWS + 1; i++){
                for(var o=0; o < MAX_COLS + 1; o++){
                    var currentTile:MemberBox = new MemberBox();
                    currentTile.x = i*150;
                    currentTile.y = o*25;
                    currentTile.name = "b"+o;
                    memberBox.addChild(currentTile);
}}

现在我需要为每个框添加一个文本字段,稍后将使用数组中的数据填充该文本字段。我尝试将每个文本字段添加到 for 循环中的数组中,然后从数组中调用,但文本字段仍然具有相同的名称,因此只有最后一个调用的实际上有效...

这就是我所拥有的 - 它几乎可以满足我的需求,但它只会将文本添加到最后创建的框。

var txtArray:Array = new Array();

for(var i=0; i  < MAX_ROWS + 1; i++){
for(var o=0; o < MAX_COLS + 1; o++){
var currentTile:MemberBox = new MemberBox();
currentTile.x = i*150;
currentTile.y = o*25;
currentTile.name = "b"+o;
memberBox.addChild(currentTile);

currentTile.addChild(memberBoxText);
memberBoxText.width = 150;
memberBoxText.height = 25;
txtArray[o] = memberBoxText;
txtArray[o].text = "test"+o;
}}

【问题讨论】:

  • 好吧,你没有在任何地方声明 memberBoxText,所以我假设你是通过 flash builder 手动添加的。您没有创建 textField 的新实例。尝试将其插入 for 循环: var memberTxt:TextField=new TextField(); currentTile.addChild(memberTxt);
  • 抱歉,漏掉了。 memberBoxText 在类中声明 public var memberBoxText:TextField = new TextField;
  • 哦!我明白了,是的,将其更改为在循环内声明变量就可以了。谢谢!请添加为答案,以便我接受。 :)

标签: arrays actionscript-3 text


【解决方案1】:

好吧,您没有在任何地方声明 memberBoxText,所以我假设您是通过 flash builder 手动添加的。您没有创建 textField 的新实例。尝试将其插入 for 循环: var memberTxt:TextField=new TextField(); currentTile.addChild(memberTxt); :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多