Skip to main content
Participant
July 8, 2015
Question

Applied Link doesn't work, when I'm changing paragraph format to Center or Right

  • July 8, 2015
  • 0 replies
  • 200 views

Hi! I'm working on AS3 TextFlow and EditManager, Applied Link (editManager.applyLink()) doesn't work, when I'm changing paragraph format (editManager.applyParagraphFormat()).

var tlfFormat:TextLayoutFormat = new TextLayoutFormat();
  

    tlfFormat.textAlign = TextFormatAlign.RIGHT; // or TextFormatAlign.CENTER;

    tlfFormat.textAlignLast = TextFormatAlign.CENTER;

    changeParagraphAlign(tlfFormat);


public function changeParagraphAlign(tlfFormat:TextLayoutFormat):void

        {

            var sel:SelectionState = editManager.getSelectionState();

           

            if (!this.editManager.hasSelection()) {

                this.textFlow.interactionManager = this.editManager;

                sel =  new SelectionState(this.textFlow, 0, this.textFlow.textLength - 1);

            }

            //apply to selected paragraphs

            this.editManager.applyParagraphFormat(tlfFormat, sel);

            this.textFlow.flowComposer.updateAllControllers();

            !this.editManager.hasSelection() && (this.textFlow.interactionManager = null);

        }


public function applyLink(lnk:String😞void
  
{
       
var prevManager:ISelectionManager = this.textFlow.interactionManager;
       
var editManager:EditManager = this.textFlow.interactionManager as EditManager;

       
if (this.editManager.hasSelection()) {
            
var sel:SelectionState = prevManager.getSelectionState();

            
if (lnk == "" && sel.absoluteStart == sel.absoluteEnd) {
                      sel
.absoluteEnd++;
                 
}
                 
//get link start and end positions
            
else if (sel.absoluteStart == sel.absoluteEnd) {
                      
var spnElement:SpanElement = this.textFlow.findLeaf(sel.absoluteStart) as SpanElement;

                      
if (spnElement.parent is LinkElement) {
                                
var linkElement:LinkElement = (spnElement.parent as LinkElement);

                                     sel
.absoluteStart = linkElement.getAbsoluteStart();
                                     sel
.absoluteEnd  = linkElement.getAbsoluteStart() + linkElement.href.length;
                           
}  
               
}

                 
if (sel.absoluteStart != sel.absoluteEnd) {
                 
//apply link
                      
if (lnk != "") {
                           
if(linkElement) {
                                linkElement
.href = lnk;
                           
} else {
                                editManager
.applyLink(lnk, null, false, sel);
                             
}
                           
}
                           
else {
                                editManager
.applyLink(null, null, true, sel);
                                
}
                           
}
                      
}

                 
this.textFlow.flowComposer.updateAllControllers();

            
}

This topic has been closed for replies.