2011-11-10 8 views
0

私はxmlからいくつかの単語を取得し、それらをステージの中央に並べて配置しようとしています。私は以下のコードでこれを達成しました。私は自動的に内部のテキストに従ってテキストフィールドのサイズを変更します。しかし今度は言葉の間にスペースがあります。私が達成するのは、それらの間にスペースを置かずに、自動サイズ設定された単語と隣接する単語を持つことです。しかし、私は問題を解決することができませんでした。 それを解決するために私を助けてください。事前に おかげactionscrip3テキストフィールドのサイズ設定終了センタリング

   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;との明示的な幅を設定しています。これは自動サイズ変更オプションよりも優先されます。私は次のコードを使用します。

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はテキストの幅を計算できます。このテキストの幅を設定します(変更することはできないテキストフィールド内のテキストの周りの固定されたパディングです)、テキストフィールドの幅として設定します。

+0

コードに誤りがありました。これは最終的に動作するはずです。計算する幅を持つ必要はありません。 – DanielB

+0

これはOKですが、xStartpointはまだpartsWidthによって計算されるため、単語間にはまだ空白があります。私が後にしているのは、テキストフィールドを横に並べて(お互いに触れて)、ステージの中央に置くことです。 – mustafa

+0

@mustafa:これはまさに私のコードで行われていることです。私はあなたがループかそうであるかどうかわからない、私は分でループで私のコードを変更します。 – DanielB

関連する問題