0
私はlistからドラッグして、textinputコントロールにドロップする方法を知っています。しかし、私はどのようにカーソルの位置の下にテキストインプットにテキストを挿入するのか分からない。たとえば、私はテキストqwerty
をtextinputに持っています。そして、私はテキスト入力にasdf
という単語をドロップする必要があります。その結果、私はテキストqweasdfrty
またはqasdfwerty
を取得したい、またはカーソルの位置に応じて必要なものを取得したい。ここでリストから特定のテキスト入力位置(カーソル下)にテキストをドロップするにはどうすればよいですか?
は、私がすでに持っているものの単純化されたコードです:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
layout="absolute"
minWidth="955"
minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private function init():void
{
horList.dataProvider=new ArrayCollection(["Reading", "Television", "Movies"]);
}
import mx.managers.DragManager;
import mx.core.DragSource;
import mx.events.DragEvent;
import flash.events.MouseEvent;
private function dragEnterHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
DragManager.acceptDragDrop(TextInput(event.currentTarget));
}
private function dragOverHandler(event:DragEvent):void
{
if (event.dragSource.hasFormat("items"))
DragManager.showFeedback(DragManager.COPY);
}
private function dragDropHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
{
var draggedText:Array = event.dragSource.dataForFormat("items") as Array;
var textInput : TextInput = TextInput(event.currentTarget);
// here i want to insert the text from (draggedText[0] as String) into textInput
}
}
]]>
</fx:Script>
<mx:HorizontalList id="horList"
x="10"
y="10"
width="625"
dragEnabled="true"
creationComplete="init()">
</mx:HorizontalList>
<mx:TextInput id="destTextInput"
x="100"
y="117"
dragEnter="dragEnterHandler(event);"
dragOver="dragOverHandler(event);"
dragDrop="dragDropHandler(event);"/>
</mx:Application>
は、これを達成するための任意の方法はありますか?
私はすでにTextLineMetricsクラスにの助けを借りて問題を解決しました。しかし、あなたの変種はより簡単でより良いです。 –
しかし、textWidthがtextInput.widthより大きく、テキストの一部が隠されているときに問題があります。その場合、charインデックスは間違っています。 –
すべては問題ありません。 –