我一直无法使用此按钮。我想要它,以便每当你点击它时,弹出一个新的文本字段,你可以输入内容。这应该是一个类似琐事的游戏,用户输入自己的问题和答案。这是迄今为止的代码......
这是文本字段的属性 -
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的新手和一般编程)
答案 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);
}