Skip navigation
jcfrei
Currently Being Moderated

textSnapshot highlighting disappears

Nov 14, 2011 5:05 AM

Tags: #as3 #actionscript3 #highlight #textsnapshot #greensock #loadermax

hi guys,

been trying to solve this problem all over the internet and am now turning to you:

the problem is that the setselected only works for a fraction of a second (if at all) and then the highlighting of the text disappears.

I don't know if this might have to do with loadermax deleting its content prematurely, but I've set autoDispose = false

any help is appreciated

 

 

thanks in advance

 

 

CODE:

 

package {

 

          import flash.display.MovieClip;

          import flash.display.Stage;

 

 

          //import fl.controls.Button;

          import flash.display.SimpleButton;

          // javascript call

          import flash.external.ExternalInterface;

          import flash.text.TextField;

          import fl.motion.MotionEvent;

          import flash.display.DisplayObject;

          import flash.events.MouseEvent;

          import fl.containers.ScrollPane;

          import fl.events.ScrollEvent;

 

          //important for scrollpane events

          import flash.events.Event;

 

          import flash.text.TextSnapshot;

 

          import flash.display.Loader;

          import flash.net.URLRequest;

          import flash.display.Sprite;

          //cursors n' ****

          import flash.ui.Mouse;

 

          //debugging

          import flash.utils.describeType;

 

          import flash.system.LoaderContext;

          import flash.system.ApplicationDomain;

          import flash.errors.IOError;

          import flash.events.IOErrorEvent;

 

          import flash.display.LoaderInfo;

 

          //timer

          import flash.events.TimerEvent;

          import flash.utils.Timer;

          import flash.utils.*;

          /*

          importing libraries:

          Edit > Preferences > ActionScript > ActionScript 3.0 Settings > Source path

          make sure to set path to parent of com folder or whatever

 

          */

          import com.greensock.*;

          import com.greensock.loading.*;

          import com.greensock.events.LoaderEvent;

          import com.greensock.loading.display.*;

          import flash.geom.Rectangle;

          import flash.display.IBitmapDrawable;

 

 

 

 

 

 

          /*

          In order to use the line this.addChild(border) your class has to be a display container. movieclip and sprite are the most common to use.

          dont forget renaming the class here!

          */

          public class expViewer10 extends MovieClip {

 

                     var mc2:MovieClip;

 

 

                     var nextPageButton:SimpleButton;

                     var prevPageButton:SimpleButton;

                     var jsButton:SimpleButton

                     var searchButton:SimpleButton;

 

 

 

                    var firstX:int = 0;

                    var firstY:int = 0;

                    var touchDown:Boolean = false;

                    var startPos:int = 0;

                    var textPos:int = 0; // aka endPos

                    var oldStartPos:int = 0;

                    var oldTextPos:int = 0; // aka endPos

                    var currentlySelecting:Boolean = false;

                    var currentText:String = "";

                    var newSelection:Boolean = false;

                    var snapshotTrigger:Boolean = false;

 

                    // colors

                    var preSelectionColor:Number = 0xDDAB00;

                    var selectionColor:Number = 0xFFEF00;

 

 

                     // array of arrays with [0] one selection

                    //                              [0][0] id [0][1] startPos ...[2] endPos [3] text

                    var selectionsArray:Array = new Array();

 

 

                    var theRectangle:DisplayObject;

                    var markCounter:TextField;

 

                    //mcScrollBar.setScrollProperties(1, 1, 4 );

 

                    // need to be outside of function

                    // initialize on enterframe

                    //var snapTextArray:Array = new Array();

                    var allSWFLoaded:Boolean = false;

 

                    var avoidJumpingMarker:int = 0;

 

                    var mc:MovieClip  = new MovieClip();;

                              //addChild(mc);

                              //addChild(container); // just gotta add containes to stage?

                    var myLoader:Loader = new Loader();                     // create a new instance of the Loader class

 

                    var url:URLRequest = new URLRequest("tmp1.swf"); // in this case both SWFs are in the same folder

 

                    var bob:Boolean = false;

 

 

                    var captureButton:SimpleButton;

 

                    var markUpButton:SimpleButton;

                    

                     // hack, just initialize once

                    var dummySprite:Sprite  = new Sprite();

                              

                               //var scrollPane:ScrollPane = scrollPaneOnStage;

                    var scrollPane:ScrollPane;

                              

                    var libMC:MovieClip;          

                              

                    var loader:Loader;          

 

                    var fLoader:forcibleLoader;

                    var queue:LoaderMax;

                    var markUpQueue:LoaderMax;

 

 

 

                    var loaderArray:Array;

                    var mcArray:Array;

                    var mcArrayTest:Array = new Array();

                    //

                    var offSetArray:Array;

                    var currentClip:int;

 

                    var snapText:TextSnapshot;

 

                    var snapTextArrayOffset:Array = new Array();

 

 

                    var inter:int = 0;

                    var noPages:int = 0;

                    var pagesLoaded = 0;

                    var justAMovieClip:MovieClip;

 

                    // renanme this as well!

                    public function expViewer10() {

 

                              // wait till this class has been added to the stage!

                              this.addEventListener(Event.ADDED_TO_STAGE, attachButtonsNStuff);

 

 

                              // dont use this, button should be there already

                              //addChild(nextPageButton);

                              //attachButtonsNStuff();

 

 

 

 

                    }

 

                    private function attachButtonsNStuff(evt:Event):void {

 

                              //scrollPane = new ScrollPane();

                              //addChild(scrollPane);

                              // constructor code

 

 

 

                              queue = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:checkHandler, onError:onError});

 

 

                              //this.addEventListener(Event.ENTER_FRAME, onEnterFrame);

                              //MovieClip(root).gotoAndStop(1);

 

 

                              mc.gotoAndStop(1);

                              loadPages();

 

 

                    }

 

                    private function progressHandler(event:LoaderEvent):void {

                              //trace("progress: " + event.target.progress);

                    }

 

                    private function onError(event:LoaderEvent) {

                              // trace("error occured with " + event.target + ": " + event.text);

 

 

                    }

 

                    private function checkHandler(event:LoaderEvent):void {

 

 

 

                                        displayPages();

 

 

 

 

                                        MovieClip(root).addChild(mc);

 

                                        //mcArray[0].textSnapshot.setSelected( 4, 300, true );

                                        //queue.getContent( ("tmp1") ).rawContent.textSnapshot.setSelected( 4, 300, true );

                              setTimeout ( function ( libMC:MovieClip ) : void {

                                                            try {

                         libMC.textSnapshot.setSelectColor( 0xFF0000 );

                         libMC.textSnapshot.setSelected( 100, 200, true );

                                                            } catch (error:Error) {

                                                                      trace(error.message);

 

                                                            } finally {

                                                                      trace("tada");

 

                                                            }

                         },

                     5000,

                     mcArray[0]

                   );

 

                    }

 

 

 

 

                    private function loadPages():void {

 

                              try{

 

                                        noPages = 12;

 

                                        for (var i:int = 0 ; i < noPages ; i++){

 

                                                  queue.append( new SWFLoader("tmp"+(i+1)+".swf", {name:"tmp"+(i+1), container:mc, estimatedBytes:70000, autoPlay:false, autoDispose:false}) );

 

                                        }

                                        queue.load();

 

                              } catch (error:Error) {

                                         // statements

                                         //ExternalInterface.call("window.alert(\"load err: "+error.message+"\")");

                              } finally {

                                         // statements

                              }

 

                    }

 

 

                    private function displayPages():void {

 

                                        //trace('1');

 

                                        mcArray = new Array();

 

                                        offSetArray = new Array();

 

                                        var fromTop:Number = 0;

 

                                        var totalChars:int = 0;

 

                                        //ExternalInterface.call("window.alert(\"length err: "+loaderArray.length.toString()+"\")");

 

                                        for (var i:int=0 ; i < 12 ; i++) {

 

                                                  //var tempmc:MovieClip =

                                                  //justAMovieClip  = MovieClip(queue.getContent( ("tmp"+(i+1)) ).rawContent);

 

                                                  mcArray[i] = queue.getContent( ("tmp"+(i+1)) ).rawContent;

 

                                                  var rect:Rectangle = mcArray[i].getRect(this);

 

                                                  //trace(inter++);

 

                                                  //mc.addChild(mcArray[i]);

 

                                                  mcArray[i].gotoAndStop(1);

 

                                                  mc.getChildAt(i).y = fromTop;

 

                                                  offSetArray.push(fromTop);

 

                                                  fromTop += rect.height + 10; // margin - put on top

 

 

                                                  totalChars += mcArray[i].textSnapshot.charCount;

                                                  //ExternalInterface.call("window.alert(\"tot chars: "+totalChars+"\")");

                                                  snapTextArrayOffset.push(totalChars);

 

 

 

                                        }

 

 

 

 

                    }

 

 

 

 

}

 

}

 
Replies
  • Currently Being Moderated
    Nov 14, 2011 7:51 AM   in reply to jcfrei

    Never use anonymous functions - they are evil. Fix that and see if it remedies the issue.

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points