如何创建一个按钮,使新文本字段出现在屏幕上?

时间:2016-01-10 03:10:06

标签: actionscript-3

我一直无法使用此按钮。我想要它,以便每当你点击它时,弹出一个新的文本字段,你可以输入内容。这应该是一个类似琐事的游戏,用户输入自己的问题和答案。这是迄今为止的代码......

这是文本字段的属性 -

    QuestionTextField = new TextField();
            QuestionTextField.defaultTextFormat = SmallTextFormat;
            QuestionTextField.textColor = 0x660000;
            QuestionTextField.x = stage.stageWidth * 0.1;
            QuestionTextField.y = 200;
            QuestionTextField.width = stage.stageWidth * 0.8;
            QuestionTextField.height = 20;
            QuestionTextField.selectable = false;
            QuestionTextField.type = TextFieldType.INPUT;
            QuestionTextField.border = true;
            QuestionTextField.multiline = true;
            QuestionTextField.wordWrap = true;

这是每次单击按钮时应该创建新文本字段的函数 -

     private function AddQuestionButtonClicked(m:MouseEvent){
        for(var i = Questions.length; i>=1; i--){
            container_buttonsMC.addChild(QuestionTextField);
            Questions.push(QuestionTextField);
            QuestionTextField.y += 20
        }
     }

注意:“问题”是一个包含文本字段数量的数组,container_buttonsMC保存游戏主菜单上的所有按钮。

问题是每当我点击它时,它1.实际上不会创建一个新的文本字段,而是向下移动一定数量的像素,并且2.它有点复制文本字段的位置......如果这完全没有任何意义。如果我单击按钮一次,它会将文本字段向下移动20个像素。如果我再次点击它,它将向下移动40像素,然后向下移动80,依此类推......

我还跟踪了数组的长度,令人惊讶的是,每次点击它时出现的数字都会加倍。但是,只有一个文本字段可见(显然)。它可能与for循环的动作有关,但我不确定。有没有人知道问题是什么? (先谢谢,我还是AS3的新手和一般编程)

1 个答案:

答案 0 :(得分:0)

首先,每次单击按钮时都需要创建一个新的文本字段,而不是将其添加到舞台上。根据您目前的情况,您只创建了一个文本字段。

其次,你只想添加一个文本字段,对吧?因此,不要使用将创建多个新文本字段的循环,而只需创建一个额外的文本字段并将其添加到列表中。

代码看起来像

private function AddQuestionButtonClicked(m:MouseEvent){
    var QuestionTextField:TextField = new TextField()
    QuestionTextField.defaultTextFormat = SmallTextFormat;
    QuestionTextField.textColor = 0x660000;
    QuestionTextField.x = stage.stageWidth * 0.1;
    QuestionTextField.y = 200;
    QuestionTextField.width = stage.stageWidth * 0.8;
    QuestionTextField.height = 20;
    QuestionTextField.selectable = false;
    QuestionTextField.type = TextFieldType.INPUT;
    QuestionTextField.border = true;
    QuestionTextField.multiline = true;
    QuestionTextField.wordWrap = true;

    // You can adjust the 50 here to control the spacing between text fields
    QuestionTextField.y += 50 * Questions.length
    container_buttonsMC.addChild(QuestionTextField);
    Questions.push(QuestionTextField);
}