为所有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
。如果没有,只需在上面的源代码中标记的名称替换。
当我尝试实现此代码时,Flash返回错误。它无法访问TextInputs。有没有像“TextInput.prototype”更容易? – Bayu
它返回的错误是什么?如果你指定了错误,那很可能是一个简单的修复。你有没有导入fl.controls.TextInput类? – richardolsson
对不起,延迟回复,我无法浏览2天。我忘记了错误,我想这是关于Flash无法找到显示对象实例。我没有导入“fl.controls.TextInput”类,因为我从组件框中拖动组件。没关系,我使用“for循环”来设置和禁用所有TextInput的焦点矩形。这种方式很麻烦,因为我必须将它添加到每个包含TextInputs的MovieClip中。所以如果我可以通过使用“prototype”属性来设置所有TextInput的样式会更好。谢谢您的回复。 – Bayu