我需要在輸入文本框中獲取插入符的位置。我不需要設置位置,我需要獲取插入符的當前位置。無法弄清楚這一點,這讓我瘋狂!在輸入TextField AS3中獲取插入位置(x,y)?
回答
如果您使用等寬字體,您可以獲得一些信息,例如在答案框中使用的字體。要獲取插入位置,有caretIndex
屬性可以讀取它。您可以使用text
屬性在文本字段中對換行進行編號,以便在(行,列)系統中獲得兩個座標。然後,使用scrollH
和scrollV
來確定文本字段的內容滾動多少,然後從座標中減去它們,然後將它們乘以一個符號的寬度和高度。但是,如果您的文本字段使用可變符號寬度的TrueType字體,則所有這些都不起作用。您可以獲得的最佳效果是當前高度,如果一行文本在整個文本字段中保持不變,則爲高度。
編輯:在文本字段的wordWrap屬性爲true時,正確的高度取決於該文本字段的寬度。您可以嘗試以下操作:
var storeText:String = tf.text.slice();
var lineHeight:Number;
if (tf.numLines == 0) lineHeight = 1;
else lineHeight = tf.textHeight/tf.numLines;
tf.text=storeText.slice(0, tf.caretIndex);
var m:int = tf.numLines-tf.scrollV;
trace(m*lineHeight);
tf.text = storeText;
該方法相當愚蠢,涉及更改文本屬性的文本字段兩次,這很慢。這將返回當前行從文本字段頂部偏移的數字。我希望這是你需要知道的。如果您想知道未滾動文本頂部的相對位置,請忽略tf.scrollV。
檢查文檔中的Texfield.caretIndex屬性和TextField.getCharBoundaries()方法。這實際上很簡單,但當字段爲空或下一個字符爲空/換行符時會變得棘手。
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldType;
import flash.events.KeyboardEvent;
import flash.geom.Rectangle;
var t:TextField = new TextField();
t.x = t.y = 20;
t.width = 200;
t.height = 100;
t.multiline = t.wordWrap = t.border = true;
t.defaultTextFormat = new TextFormat('_sans',20);
t.type = TextFieldType.INPUT;
addChild(t);
stage.focus = t;
t.addEventListener(KeyboardEvent.KEY_DOWN,kd);
function kd(e:KeyboardEvent):void {
if (!e.ctrlKey) return;
var car:int = t.caretIndex;
var rect:Rectangle = t.getCharBoundaries(car);
if (rect == null) {
trace('caret:'+car,'need to calculate this possibility')
} else {
trace('caret:'+car,rect,'(relative to textfield)');
}
}
謝謝,這是完美的,當它實際上工作,哈!無論如何不能讓它始終工作嗎?不可能在我的車廂之間放置兩個「A」或其他物品? – user1133188
當然,你可以做到這一點。如果rect爲空,則追加A,將選擇內容設置爲caret-1,再次計算rect,然後刪除以下額外的A字符。 – inhan
看來我還是發明了一輛自行車......很好找,謝謝。 – Vesper
- 1. TextField as3獲取輸入
- 2. 在javascript中的x和y座標中獲取插入位置
- 3. 獲取用戶輸入的點位置(x,y,z)
- 4. 獲取x和y位置?
- 5. 使用x和y位置設置textarea的插入位置
- 6. 獲取textfield的輸入
- 7. Python:獲取插入位置
- 8. 在TextBox中獲取插入位置
- 9. 在textarea(IE)中獲取插入位置
- 10. 將AS3 TextInput插入到TextField中
- 11. SmartGWT TextField更改插入位置
- 12. C#RichTextBox中移動插入符x,y位置
- 13. 如何在j2me中設置textField中的插入符號位置?
- 14. 使用UIScrollview時獲取x,y位置
- 15. 獲取輸入附件視圖的y位置
- 16. 在AS3中將光標(閃爍插入符號)放入輸入TextField以供用戶輸入。
- 17. JavaScript'contenteditable' - 獲取/設置插入位置
- 18. 在JTextArea中獲取插入位置的XY位置
- 19. 如何從圖像輸入中獲取x和y座標?
- 20. 在位置X處插入值
- 21. 問題讀取輸入框中補間對象的x和y座標 - AS3
- 22. 如何獲取UIView中嵌入元素的絕對x/y位置?
- 23. 在Google地圖中獲取(x,y)中的標記位置
- 24. 獲取有關插入位置
- 25. JavaScript的FreeTextBox獲取插入位置(IE)
- 26. TinyMCE 4 - 獲取插入位置
- 27. 在textField中獲取「arrow」符號AS3
- 28. AS3 - TextField:嵌入字體
- 29. 將GEO位置插入輸入HTML
- 30. 獲取觸摸輸入的x和y座標(Android studio,Java)
其實我在經過一番思考之後只需要y的位置。你能解釋一下怎麼做嗎?我有點學習AS3。 – user1133188
你的文本字段是否有wordWrap屬性爲true? – Vesper
是的,它是真的。 – user1133188