2011-04-03 45 views
0

我正在设计一个Flash应用程序,它需要来自用户的两个或三个数据。第三个数据元素仅在其他元素之一已经从默认值更改时才相关。如何保持元素灰色,除非符合条件?

为了防止用户输入会使输入偏差的信息,如果默认条件不变,我该如何灰化文本输入框?我可以嵌入一个条件来忽略来自该特定框的输入,但我知道有些用户将填写所有数据字段,而不管屏幕上的指示如何。

回答

1

只需使用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被禁用。

+0

这适用于按钮,但不适用于文本字段。我不得不使用'textfield.selectable = false'来禁用输入,但文本仍然可以输入,它根本就没有提交。 – Jason 2011-04-03 23:55:17

+0

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

+0

我已更新示例以解决您提出的问题。 – 2011-04-04 02:34:29