为所有AS3 TextInput组件设置样式并禁用焦点?

问题描述:

如何为“ALL”AS3 TextInput组件“setStyle”和“禁用焦点”(删除焦点时的默认蓝线矩形)?为所有AS3 TextInput组件设置样式并禁用焦点?

除非您打算以某种方式记录它们,否则我认为最好的方法可能是对显示列表进行递归寻找该类的实例。例如:

// Necessary imports 
import flash.display.DisplayObjectContainer; 
import flash.display.DisplayObject; 
import fl.controls.TextInput; 


function disableAllInputs(container : DisplayObjectContainer) : void 
{ 
    var i : uint; 
    for (i=0; i<container.numChildren; i++) { 
     var child : DisplayObject = container.getChildAt(i); 
     if (child is TextInput) {      // Proper class here 
      var input : TextInput = TextInput(child); // and here 
      // Disable focus and setStyle here 
     } 
     else if (child is DisplayObjectContainer) { 
      // Recurse 
      disableAllInputs(child as DisplayObjectContainer); 
     } 
    } 
} 

这将遍历所提供的容器的所有子节点并检查它们是否是输入。如果是,可以在适当的if语句中为它们执行所需的代码。但是,如果它们是其他容器,它也会递归并循环通过该容器的子项。

我不确定文本输入组件的类名是什么,但我认为它只是TextInput。如果没有,只需在上面的源代码中标记的名称替换。

+0

当我尝试实现此代码时,Flash返回错误。它无法访问TextInputs。有没有像“TextInput.prototype”更容易? – Bayu

+0

它返回的错误是什么?如果你指定了错误,那很可能是一个简单的修复。你有没有导入fl.controls.TextInput类? – richardolsson

+0

对不起,延迟回复,我无法浏览2天。我忘记了错误,我想这是关于Flash无法找到显示对象实例。我没有导入“fl.controls.TextInput”类,因为我从组件框中拖动组件。没关系,我使用“for循环”来设置和禁用所有TextInput的焦点矩形。这种方式很麻烦,因为我必须将它添加到每个包含TextInputs的MovieClip中。所以如果我可以通过使用“prototype”属性来设置所有TextInput的样式会更好。谢谢您的回复。 – Bayu