ActionScript 3中如何在不替换原有内容的前提下向文本框追加文本
ActionScript 3 计算器数字追加解决方案
问题原因
你当前的代码是直接将新点击的数字赋值给文本框的text属性,每次赋值都会覆盖文本框原有内容,因此出现输入替换的问题。
核心实现逻辑
要实现追加效果,需要先读取文本框已有内容,拼接新数字后再重新赋值:
- 触发数字按钮点击事件时,获取点击对应的数字字符
- 读取文本框当前的字符串内容
- 将新数字拼接到原有字符串末尾
- 把拼接完成的字符串赋值给文本框的
text属性
代码示例
错误写法(当前覆盖效果的原因)
function numBtnClick(e:MouseEvent):void { var selectNum:String = e.target.label; // 直接赋值,每次都会清空原有内容 inputText.text = selectNum; }
基础正确写法(实现追加效果)
function numBtnClick(e:MouseEvent):void { var selectNum:String = e.target.label; // += 运算符等价于 inputText.text = inputText.text + selectNum,实现内容拼接 inputText.text += selectNum; }
计算器场景常用优化
处理初始0的前缀问题
避免初始状态下点击数字出现01、02这类无效格式:
function numBtnClick(e:MouseEvent):void { var selectNum:String = e.target.label; if(inputText.text == "0"){ // 当前是默认0时直接替换,不需要追加 inputText.text = selectNum; }else{ inputText.text += selectNum; } }
限制重复小数点输入
避免文本框内出现多个小数点:
function dotBtnClick(e:MouseEvent):void { // 检查当前文本中是否已经包含小数点 if(inputText.text.indexOf(".") == -1){ inputText.text += "."; } }
内容的提问来源于stack exchange,提问作者Astonio
相关产品推荐
相关产品推荐

