перемещать форматированный текст движением мыши во flex

у меня есть RichText с фоном, и я хочу переместить его движением мыши

поэтому я пишу код ниже: (richText - глобальное поле)

public function createRichText(textPoint:Point):RichText {
richText = new RichText();  
    var measure:String = correlationMeasure.toFixed(4).toString();
    richText.text = measure;
    richText.x = textPoint.x; 
    richText.y = textPoint.y; 
    richText.width = 60;
    richText.height = 24;
    richText.setStyle("fontSize", 11);
    richText.setStyle("horizontalCenter", "0");
    richText.setStyle("verticalCenter", "1");
    richText.setStyle("left", "2");
    richText.setStyle("right", "2");
    richText.setStyle("top", "5");
    richText.setStyle("bottom", "5");
    richText.setStyle("textAlign", "center");
    richText.setStyle("verticalAlign", "middle");
    richText.setStyle("backgroundColor", 0xe6e91f);
    richText.setStyle("backgroundAlpha", 1);
        richText.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 10);
        richText.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 10);
return richText
}


private function mouseDownHandler(e:MouseEvent):void {
    e.stopPropagation();
    allowDraging = true;
    richText.addEventListener(MouseEvent.MOUSE_MOVE, dragWithMouse);
}
private function dragWithMouse(e:MouseEvent):void {
    if (allowDraging) {
        e.stopPropagation();
        var temp:Point = richText.contentToGlobal(new Point(e.localX, e.localY));
        mousePoint = rootComponent.globalToLocal(temp);

        removeChild(richText);
        addChild(createRichText(mousePoint));
        e.updateAfterEvent();*/
    }
}

но он не работает правильно ... значит, он не движется непрерывно с движением мыши и имеет прыжок !!! кто-нибудь знает, почему?


person samira    schedule 20.06.2013    source источник


Ответы (1)


Попробуйте startDrag() и Методы stopDrag(), определенные в классе Sprite:

  private function mouseUpHandler(e:MouseEvent):void {
      e.stopPropagation();
      richText.stopDrag();
  }

  private function mouseDownHandler(e:MouseEvent):void {
       e.stopPropagation();
       richText.startDrag();
 }
person Pan    schedule 20.06.2013
comment
Спасибо @Pan, это работает ... но у меня проблема: я рисую соединительную линию между двумя прямоугольниками, а этот RichText находится в середине этой строки ... вы знаете, как переместить линию с помощью этого RichText? - person samira; 20.06.2013
comment
Попробуйте поместить richText и строку в контейнер, такой как спрайт, холст и т. д., затем добавьте событие мыши в контейнер, как указано выше. - person Pan; 20.06.2013
comment
извините, @Pan, у меня снова проблема: если я использую Canvas, потому что моя строка имеет тип Shape, когда я использую myCanvas.addChild(myLine), я получаю ошибку времени выполнения, и если я использую Sprite, мой RichText не отображается даже от mySprite.addChild(richText) !!! не странно?! - person samira; 20.06.2013
comment
Если вы используете холст, вы можете добавить такую ​​фигуру, как myCanvas.rawChildren.addChild(myLine); - person Pan; 20.06.2013