2012-04-13 57 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 

您可能希望修改函數以接受名稱,以便稍後可以訪問每個變量。