2011-11-10 78 views
0

我想從xml中獲取一些單詞,並將它們放在舞臺中央並排放置。我通過下面的代碼實現了這一點。我根據裏面的文本自動調整文本框的大小。但這一次出現了詞語之間的空白。我所做的就是在他們之間沒有空間的情況下自動拼寫和相鄰的單詞。但我無法解決問題。 你能幫我解決它嗎? 在此先感謝actionscrip3 textfield sizeing end centering

   var partsWidth=100;    
       var wordTf = new TextField(); 
       wordTf.name =thispart; 
       wordTf.text =thispart; 
       wordTf.width=partsWidth; 
       xStartPoint=stage.stageWidth/2 - (numberOfWords * partsWidth)/2; 
       wordTf.height=partsHeight; 
       wordTf.x= xStartPoint + (index * partsWidth) ; 
       wordTf.y=150; 
       wordTf.background=true; 
       wordTf.backgroundColor = 0xe3e3e3; 

       wordTf.border = true; 
       var myFormat:TextFormat = new TextFormat(); 
        myFormat.size = 16; 
        myFormat.align = TextFormatAlign.CENTER; 

       wordTf.setTextFormat(myFormat); 
       wordTf.autoSize=TextFieldAutoSize.CENTER; 
       addChild(wordTf); 
+0

字或字母之間?字之間有 – Benny

+0

。由於partsWidth值是100(或其他設置),所以會出現單詞之間的空白。但如果我刪除寬度值,我無法計算位置和居中。 – mustafa

回答

1

要設置寬度明確與wordTf.width=partsWidth;。這將覆蓋autosize選項。我會使用下面的代碼。

var container:Sprite = new Sprite(); 

var myFormat:TextFormat = new TextFormat(); 
    myFormat.size = 16; 
    myFormat.align = TextFormatAlign.CENTER; 

for each(var thispart:String in parts) 
{ 
    var wordTf = new TextField(); 
    wordTf.defaultTextFormat = myFormat; 
    wordTf.name = thispart; 
    wordTf.text = thispart; 
    wordTf.height=partsHeight; 
    wordTf.background=true; 
    wordTf.backgroundColor = 0xe3e3e3; 
    wordTf.border = true; 
    wordTf.width = wordTf.textWidth + 4; 
    wordTf.y=150; 
    wordTf.x = container.width; 
    container.addChild(wordTf); 
} 

container.x = (stage.stageWidth - container.width)/2; 
addChild(container); 

將你的話添加到一個單獨的精靈,並添加所有單詞後,將此精靈添加到舞臺並居中。

wordTf.width = wordTf.textWidth + 4; 

是重要的一個。設置文本後,flash可以計算文本的寬度。現在將該文本寬度(+4是文本字段中不可修改的文本週圍的固定填充)設置爲文本字段的寬度。

+0

代碼中有一些錯誤。這應該終於奏效。沒有必要有寬度來計算。 – DanielB

+0

沒問題..但xStartpoint仍然通過partsWidth計算,所以單詞之間仍然有空格。我所追求的是並排放置不同大小的文本區(互相觸摸)並以舞臺爲中心。 – mustafa

+0

@mustafa:這正是我的代碼所做的。我不知道你是否要通過一個循環,所以我會在一分鐘內用循環修改我的代碼。 – DanielB