我有一个文本字段,按下按钮后应该可以编辑:
playerName = new TextField();
playerName.autoSize = "left";
playerName.styleSheet = styleSheet;
playerName.type = TextFieldType.DYNAMIC;
playerName.tabEnabled = false;
playerName.maxChars = 14;
playerName.background = false;
playerName.backgroundColor = 0x1e904b;
...
var boldStyleObject:Object = {};
boldStyleObject.fontSize = 12;
boldStyleObject.fontFamily = "Verdana";
boldStyleObject.color = "#ffffff";
boldStyleObject.fontWeight = "bold";
styleSheet.setStyle(".bold", boldStyleObject);
boldStyleName = "bold";
...
playerName.htmlText = "<span class='" + boldStyleName + "'>" + player.name + "</span>";
...
private function ChangeName (event:Event):void
{
playerName.type = TextFieldType.INPUT;
playerName.background = true;
playerName.addEventListener(KeyboardEvent.KEY_DOWN, DoneEditing);
stage.focus = playerName;
}
...
private function DoneEditing (event:KeyboardEvent):void
{
var target:TextField = event.target as TextField;
if (event.keyCode == 27)
{
target.text = editBackup;
DisactivateTextField(target);
}
else if (event.keyCode == 13 && target == playerName && playerName.text.length > 3)
{
DisactivateTextField(target);
}
}
private function DisactivateTextField(field:TextField):void
{
field.type = TextFieldType.DYNAMIC;
field.background = false;
field.removeEventListener(KeyboardEvent.KEY_DOWN, DoneEditing);
}
除了Textfield的可编辑性之外,所有的功能都运行良好。为什么?
2条答案
按热度按时间jvidinwx1#
按下按钮需要
MouseEvent
s,以确保您向按钮添加了正确的事件侦听器。此外,请确保您正在检查用户输入以终止编辑或评估输入本身。gev0vcfq2#
问题出在html风格上。由于某些原因,通过样式表设置样式的带有htmlText的
TextField
无法编辑。您应该使用TextField.defaultTextFormat
属性设置要编辑的文本的样式。