2012-04-13 59 views
0

我正在为我的游戏的结果页面以及升级页面寻找一个简单的方法来做很多文本域。我的文本格式需要处理字体,颜色和大小,但要寻找一种简单的方法来实现文本字段的宽度和高度,以便同时增加所有字体。AS3多个文本域变得容易

我已被通知可能有效的“with”关键字,但不知道如何在我的程序中执行此操作,并且本质上希望尽可能缩短结果类。

谢谢

回答

0

据我所知,你不能使用“与”关键字定位的多个对象。下面是它的文档: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; 
    //... 
} 
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 

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