Finden Sie das Wort die Maus über für Text-Komponente (Flex / Actionscript)
-
03-07-2019 - |
Frage
Ist es möglich (wenn ja, wie), um herauszufinden, welches Wort der Cursor / Maus über ist, wenn es eine bewegte über Vielen Dank für jede Info.
Lösung
Hier ist eine Möglichkeit, es zu tun: Sie müssen Ihre eigene Komponente erstellen, die mx erweitert: Textkomponente. Früher habe ich MyText
in diesem Beispiel. Hier ist der vollständige Code für MyText
:
<?xml version="1.0" encoding="utf-8"?>
<mx:Text xmlns:mx="http://www.adobe.com/2006/mxml" mouseMove="onMouseMove(event)" initialize="init()">
<mx:Script>
<![CDATA[
// Text formats
private var normalTextFormat:TextFormat;
private var highlightTextFormat:TextFormat;
// Saved word start and end indexes
private var wordStartIndex:int = -1;
private var wordEndIndex:int = -1;
private function init():void
{
normalTextFormat = textField.getTextFormat();
normalTextFormat.color = 0;
highlightTextFormat = textField.getTextFormat();
highlightTextFormat.color = 0xFF0000;
}
private function onMouseMove(event:MouseEvent):void
{
// Clear previous word highlight
textField.setTextFormat(normalTextFormat, wordStartIndex, wordEndIndex);
var charIndexUnderMouse:int = textField.getCharIndexAtPoint(event.localX, event.localY);
wordStartIndex = charIndexUnderMouse;
wordEndIndex = charIndexUnderMouse;
// Find start of word
while (text.charAt(wordStartIndex) != " " && wordStartIndex > 0)
{
wordStartIndex--;
}
// Find end of word
while (text.charAt(wordEndIndex) != " " && wordEndIndex < text.length)
{
wordEndIndex++;
}
// Highlight character
textField.setTextFormat(highlightTextFormat, wordStartIndex, wordEndIndex);
}
]]>
</mx:Script>
</mx:Text>
Es funktioniert durch die Methoden des Textfield-Objekts in der Textkomponente, das Finden den Zeichenindex unter den Mauskoordinaten zugreifen und dann das Wort zu finden, das Zeichen gehört. Dies ist ein kurzes Beispiel, müssen Sie wahrscheinlich es aufwändigere für reale Welt Verwendung machen.
Andere Tipps
Sie müssen die Textsnapshot-Klasse verwenden. Sie können es aus dem Text-Steuerelement aus der textsnapshot Eigenschaft greifen. Textsnapshot hat eine hitTestTextNearPos () Funktion, die Sie, welches Zeichen des Benutzers Maus in der Nähe ist verwenden können, zu bestimmen.
...
var startIndex:Number;
...
private function textMouseMoveHandler(event:MouseEvent):void
{
var snapshot:TextSnapshot = text.textSnapshot;
var index = snapshot.hitTestTextNearPos(event.x, event.y);
snapshot.setSelected(startIndex, index, true);
}
// I do not know how you want to begin the selection, so I put it here in the MouseEnter event.
private function textMouseEnterHandler(event:MouseEvent):void
{
var snapshot:TextSnapshot = text.textSnapshot;
startIndex = snapshot.hitTestTextNearPos(event.x, event.y);
}
Nicht sicher, wie Sie die Auswahl zu handhaben wollen starten, aber so etwas wie das funktionieren soll.