這是一個非常簡單的,我認爲很容易在谷歌上找到,但我不能想到的術語。如何使動態文本框推下其他控件
我正在使用CS4和AS3以及一些下面的多行動態文本框。當我填充頂部文本框時,我希望當內容流入額外的行時,它會自動壓下其下的其他文本框。
目前它只包含在每個文本框之間的空白處,但當到達下面的文本框時停止。
是否有一個屬性可以允許我(我曾在Silverlight中工作過,有在那裏的控件),我可以設置或將不得不手動實現這一點,並調用功能來重新設置所有控件y每當我改變文本框中的文本屬性?
感謝
這是一個非常簡單的,我認爲很容易在谷歌上找到,但我不能想到的術語。如何使動態文本框推下其他控件
我正在使用CS4和AS3以及一些下面的多行動態文本框。當我填充頂部文本框時,我希望當內容流入額外的行時,它會自動壓下其下的其他文本框。
目前它只包含在每個文本框之間的空白處,但當到達下面的文本框時停止。
是否有一個屬性可以允許我(我曾在Silverlight中工作過,有在那裏的控件),我可以設置或將不得不手動實現這一點,並調用功能來重新設置所有控件y每當我改變文本框中的文本屬性?
感謝
首先你需要的文本框將自動調整大小
myTextField.autoSize = TextFieldAutoSize.LEFT
,那麼你需要聽的文本框的變化,或者
myTextField.addEventListener(Event.CHANGE, function(e:Event):void{
var newHeight:number = myTextField.height;
}
基礎上,用戶打字新的高度,您可以將其他元素向上或向下移動
I沒有意識到任何財產很容易做到這一點,但我已經手動實現了類似的東西。每當你想調整文本框調用類似這樣的功能: (未測試的代碼)
private function arrangeText():void {
var maxWidth:Number = 400; //the ending width of your
//Set width to something low for all textfields,
//to get accurate reading of textWidth
txtTitle.width = 200;
txtSub.width = 200;
//Set autosizing temporarily
txtTitle.autoSize = TextFieldAutoSize.LEFT;
txtSub.autoSize = TextFieldAutoSize.LEFT;
//Get roughly the number of lines required to display all the text
var titleLines:Number = Math.ceil(txtTitle.textWidth/maxWidth) - 1;
var subLines:Number = Math.ceil(txtSub.textWidth/maxWidth) - 1;
//Now that you know roughtly how many lines are needed,
//Take off autosizing
txtTitle.autoSize = TextFieldAutoSize.NONE;
txtSub.autoSize = TextFieldAutoSize.NONE;
//set textfield widths bask to normal
txtTitle.width = maxWidth;
txtSub.width = maxWidth;
//Apply new height values to textfields
//Prevent textfields from being too tall as well with the "> 3" part
txtTitle.height = (titleLines > 3 ? 100 : txtTitle.textHeight) + 5;
txtSub.height = (subLines > 3 ? 60 : txtSub.textHeight) + 5;
//Starting from the top going down
//Move each of your textfields under the previous one
txtSub.y = txtTitle.x + txtTitle.height;
}
您強調'我們現在大概知道會有多少行',但是您隨機將文本框寬度設置爲200(全寬的一半)。我不認爲大致正確就足以滿足客戶的高端產品。爲什麼還有3行的隨機檢查?有三條以上的線路有什麼特別之處?還有魔術100,60和5,他們代表什麼? – ThePower
好問題讓我解釋一下。如果再次通讀代碼,200寬度是一個臨時狀態,可以立即通過「.autoSize」屬性進行調整。您應該能夠將其設置爲400或更少,結果相同。當你計算你正在使用的實際文本寬度由「.autoSize」決定。這3條線只是一種控制佈局的方法,如果它最終會說50行,那麼這將完全破壞佈局,所以應該有一些限制。其他值應該從您的textFields高度/字體大小計算。 5是額外的填充。 – ToddBFisher
啊,好吧,我幫你。由於我使用的是滾動條,所以我的頭腦處於不同的環境中,所以我無法把頭轉向它。感謝宣言。 – ThePower
這聽起來像你真的需要在Flex中進行工作。 –
即使對於這樣簡單的功能?當然它必須被內置。 – ThePower