Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何创建一个按钮,使一个新的文本字段出现在屏幕上?_Actionscript 3 - Fatal编程技术网

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

Actionscript 3 如何创建一个按钮,使一个新的文本字段出现在屏幕上?,actionscript-3,Actionscript 3,我一直很难按这个按钮。我想要它,这样每当你点击它,一个新的文本字段弹出,你可以键入的东西。这应该是一个类似琐事的游戏,用户输入自己的问题和答案。这是到目前为止的代码 这是文本字段的属性- QuestionTextField = new TextField(); QuestionTextField.defaultTextFormat = SmallTextFormat; QuestionTextField.textColor = 0x6600

我一直很难按这个按钮。我想要它,这样每当你点击它,一个新的文本字段弹出,你可以键入的东西。这应该是一个类似琐事的游戏,用户输入自己的问题和答案。这是到目前为止的代码

这是文本字段的属性-

    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
        }
     }
注:“问题”是一个数组,其中包含文本字段的数量,容器按钮MC包含游戏主菜单上的所有按钮

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


我还跟踪了数组的长度,令人惊讶的是,每次单击时出现的数字都会翻倍。但是,只有一个文本字段可见(显然)。这可能与for循环的操作有关,但我不确定。有人知道问题出在哪里吗?(提前感谢,我对AS3和编程还是个新手)

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

第二,您只想再添加一个文本字段,对吗?因此,与使用循环(将创建多个新文本字段)不同,只需创建一个额外的文本字段并将其添加到列表中

代码将类似于

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);
}

这修复了数组问题,但只要单击按钮,先前存在的文本字段就会消失。它将删除文本字段,更改其y值,然后再次添加。Hm。您确定有
new TextField()
的行在那里吗?是否有任何东西会删除一个文本字段?能否将此添加到末尾并告诉我发生了什么<代码>如果(Questions.length>1){trace(Questions[0]==Questions[1]);}我想我找到了答案。。。文本字段没有被删除,只是看起来有一个,因为它们彼此叠在一起……而且,你告诉我要添加的内容给了我1009错误。