Forums Développement Multimédia

Aller au contenu

Position du curseur dans Textflow

CODE Actionscript

4 réponses à ce sujet

#1 Super Puissant

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 16 November 2011 - 16:23 PM

bonjour,

j'ai du textflow dans un ou plusieurs containers.

j'aimerai connaitre la position du curseur, les coordonnées x et y par rapport au container.

#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 16 November 2011 - 18:05 PM

Bonjour,

J'ai trouvé une méthode mais je ne garantie pas quelle fonctionne partout.

L'idée est de trouver l'objet graphique d'affichage de la ligne sélectionnée pour obtenir la position en y de la sélection, puis de trouver la position x de la sélection dans cette ligne :


/**
 * Déclenché lorsque la sélection change.
 */

private function _selectionChangeHandler(event:SelectionEvent):void {
  //Récupère la sélection en cours
  var selectionState:SelectionState = _editManager.getSelectionState() ;
 
  //Récupère auprès du composer la ligne de la sélection
  var textFlowLine:TextFlowLine = _textFlow.flowComposer.findLineAtPosition(selectionState.activePosition) ;
 
  //Récupère l'objet d'affichage de la ligne
  //(c'est la position y = 0 de la ligne qui sera utilisée, cette position correspond à la position de la baseline)
  var textLine:TextLine = textFlowLine.getTextLine(true) ;
 
  //Détermine la position de la sélection dans la ligne
  var selectionPosition:int = selectionState.activePosition - textLine.textBlockBeginIndex ;

  //Obtient la position graphique de la sélection dans la ligne
  //(c'est la position en x de la sélection qui sera utilisée)
  var selectiongraphics:Rectangle = textLine.getAtomBounds(selectionPosition) ;
 
  //Convertit la position graphique au niveau globale
  var globalPosition:Point = textLine.localToGlobal(new Point(selectiongraphics.x, 0)) ;

 

Je suis très curieux de savoir s'il y a une autre méthode.

#3 Super Puissant

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 16 November 2011 - 18:30 PM

si je met du textFlow avec une VScrollBar,

je clique pour placer le curseur, puis je déplace le curseur à l'aide des flèches du clavier.

une fois la limite de la fenêtres atteinte, le scrollBar suit le curseur et le texte défile.

je conclus que le scrollBar a déterminé la position du curseur.

comment a-t-il fait?

#4 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 16 November 2011 - 20:25 PM

La scrollBar ne détecte pas la position du curseur, elle base ses calculs sur les hauteurs de lignes, or il est très facile d'obtenir la hauteur d'une ligne et l'index de ligne sur laquelle est positionné la position active du curseur.

Obtenir la position exacte du curseur en x et y me semble beaucoup plus compliqué (voir l'exemple).

Modifié par deuxsucres, 16 November 2011 - 20:26 PM.


#5 Super Puissant

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 17 November 2011 - 09:30 AM

moi je n'ai besoin que des coordonnées y. et votre méthode fonctionne dans tous les cas pour le moment.

donc merci



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)