AS3多个文本域变得简单

时间:2012-04-13 18:41:23

标签: actionscript-3 textfield

我正在为我的游戏的结果页面以及升级页面工作,并寻找一种简单的方法来完成许多文本字段。我有一个文本格式,负责字体,颜色和大小,但寻找一种简单的方法来做文本字段的宽度和高度,以同时增加所有。

我已被告知可能有效的“with”关键字,但不了解如何在我的程序中实现此功能,并且如果可能的话,本质上希望缩短我的结果类。

谢谢,

2 个答案:

答案 0 :(得分:1)

最好的方法是创建用于生成文本字段的自定义函数。

该示例可在livedocs本身找到。

所以类似下面这样就足够了:

private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField {

        var result:TextField = new TextField();

        result.x = x; 

        result.y = y;

        result.width = width; 

        result.height = height;

        return result;
    }

您还可以为函数中的每个属性设置默认值。

private function createCustomTextField ( x:Number= <Default Value>,  ...

使用它在容器表单中添加文本字段。

var container:Sprite = new Sprite();  // New form container

container.addChild(createCustomTextField (20,20,50,50)); // Text Filed 1

container.addChild(createCustomTextField (20,50,50,50)); // Text Filed 2

addChild(container);  // Add to current class

您可能希望修改函数以接受名称,以便稍后可以访问每个变量。

答案 1 :(得分:0)

据我所知,您不能使用“with”关键字来定位多个对象。这是它的文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html#with

我过去所做的只是制作一个包含所有目标的数组,然后编写一个循环来为每个目标应用属性:

var textFormat:TextFormat = generateMyCustomTextFormat();
var textField1:TextField = new TextField();
var textField2:TextField = new TextField();
//...
var textField3:TextField = new TextField();
var targets:Array = [textField1, textField2, textField3];
for(var i:int=0; i<targets.length; i++)
{
    targets[i].defaultTextFormat = textFormat;
    targets[i].width = 250;
    //...
}