0
我正在设计一个Flash应用程序,它需要来自用户的两个或三个数据。第三个数据元素仅在其他元素之一已经从默认值更改时才相关。如何保持元素灰色,除非符合条件?
为了防止用户输入会使输入偏差的信息,如果默认条件不变,我该如何灰化文本输入框?我可以嵌入一个条件来忽略来自该特定框的输入,但我知道有些用户将填写所有数据字段,而不管屏幕上的指示如何。
我正在设计一个Flash应用程序,它需要来自用户的两个或三个数据。第三个数据元素仅在其他元素之一已经从默认值更改时才相关。如何保持元素灰色,除非符合条件?
为了防止用户输入会使输入偏差的信息,如果默认条件不变,我该如何灰化文本输入框?我可以嵌入一个条件来忽略来自该特定框的输入,但我知道有些用户将填写所有数据字段,而不管屏幕上的指示如何。
只需使用Event.CHANGE侦听器+处理程序来检查元素的状态/状态。每当用户更改组件时,都会触发此事件。例如,继承人文本输入这样做:
var tf:TextInput = new TextInput();
var someOtherObject:Button = new Button();
tf.x = 100;
tf.y = 100;
tf.width = 150;
stage.addChild(tf);
stage.addChild(someOtherObject);
tf.addEventListener(Event.CHANGE, onFormChanged);
private function onFormChanged(e:Event):void
{
switch(e.currentTarget){
case tf:
//Do your conditional checks here.
if(tf.text.toString().length < 10){
someOtherObject.enabled = false;
someOtherObject.text = "";
someOtherObject.maxChars = 0;
}else{
someOtherObject.maxChars = 100;
}
break;
case someOtherObject:
break;
}
}
所以基本上,当用户键入到TF,我确保他们已经进入至少10个字符。如果它们符合条件,然后擦除一个字符,事件将再次被触发,并且条件不会被满足,所以一些OtherObject被禁用。
这适用于按钮,但不适用于文本字段。我不得不使用'textfield.selectable = false'来禁用输入,但文本仍然可以输入,它根本就没有提交。 – Jason 2011-04-03 23:55:17
http://www.adobe.com/go/as3lr当您需要找出与特定组件/类进行交互的特定方式时,请使用语言参考。在TextInput的情况下,您可以简单地将maxChars属性设置为0,并通过设置textInput.text =“”;来清除所有内容。但是你说的是正确的,我说你可以简单地禁用它,但实际上并不适用于这个确切的组件。不幸的是,这就是闪光的本质。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/controls/TextInput.html#maxChars。 – 2011-04-04 02:32:52
我已更新示例以解决您提出的问题。 – 2011-04-04 02:34:29