propiedad de ActionScript 3 TextField scrollH se establece en 0 en tecleo
-
12-09-2019 - |
Pregunta
Estoy poblar un campo de texto mediante programación y desplazarse a la maxScrollH medida que se añade el nuevo texto que el usuario pueda ver la progresión de texto. Esto funciona bien, hasta que haga clic en el campo de texto, que establece scrollH de nuevo a 0 y coloca el cursor en el texto en la posición equivalente.
textField.setSelection( text.length, text.length ); //sets the caretIndex/selection to the end
textField.scrollH = textField.maxScrollH; //scrolls to max
este es el código que estoy usando para desplazarse cuando la propiedad de texto textField se actualiza. He intentado añadir un oyente al evento click en el campo de texto, que funciona de una manera, pero provoca un salto visible.
override protected function createChildren() : void
{
super.createChildren();
textField.addEventListener(MouseEvent.CLICK, handleTextFieldClick, false, 0, true);
}
protected function handleTextFieldClick(event:MouseEvent):void
{
textField.scrollH = currentTextFieldScrollPosition; //stored scrollH value
trace(textField.scrollH);
}
Mi conjetura es que hay una posición de desplazamiento se calcula o en algún lugar almacenado que no puedo encontrar.
Solución
El TextInput flex establece la selección de la textField:
/**
* @private
* Gets called by internal field so we draw a focus rect around us.
*/
override protected function focusInHandler(event:FocusEvent):void
{
if (event.target == this)
systemManager.stage.focus = TextField(textField);
var fm:IFocusManager = focusManager;
if (editable && fm)
{
fm.showFocusIndicator = true;
if (textField.selectable &&
_selectionBeginIndex == _selectionEndIndex)
{
textField.setSelection(0, textField.length);
}
}
[...]
anulando esto en mis correcciones de componentes este problema:
override protected function focusInHandler(event:FocusEvent):void
{
super.focusInHandler(event);
textField.scrollH = currentTextFieldScrollPosition;
}
Otros consejos
resulta que usted necesita para hacer un manejador onclick para la ventana con UIScrollBar, y luego añadir un detector de eventos enfoque hacia fuera para él que pase por el lugar barra de desplazamiento en el momento de la onclick al foco. ActionScript 3: mantener la posición UIScrollBar área de texto en pérdida de concentración flash embed