Jump to content
Search Community

frickteam

Members
  • Posts

    7
  • Joined

  • Last visited

Posts posted by frickteam

  1. Ok i didn't realize that my container stills shows the orginal size of the image and not the masked one. I've found a quite simple solution for this.

    I added the transformManager to a invisible controlMC inside the maskedContainer who will manage sizing and all the other stuff which matters....

     

    //----------------------------------------------

    //imports

    import gs.events.TransformEvent;

    import gs.transform.TransformItem;

    import gs.transform.TransformManager;

    //----------------------------------------------

    // set up transform manager

    var _tm: TransformManager = new TransformManager();

    //----------------------------------------------

    // container which should be transformed

    var maskedContainer:MovieClip = new MovieClip();

    addChild(maskedContainer);

    //----------------------------------------------

    // image container with mask

    var imageContainer:Pinguins = new Pinguins();

    maskedContainer.addChild(imageContainer);

    var offsetWidth:Number = -imageContainer.width/2;

    var offsetHeight:Number = -imageContainer.height/2;

    //

    var maskMC:MovieClip = new MovieClip();

    maskMC.graphics.beginFill(0xFF0000,.5);

    maskMC.graphics.drawRect(offsetWidth, offsetHeight, imageContainer.width, imageContainer.height);

    maskMC.graphics.endFill();

    maskedContainer.addChild(maskMC);

    //

    var controlMC:MovieClip = new MovieClip();

    controlMC.graphics.beginFill(0x006666,0);

    controlMC.graphics.drawRect(offsetWidth, offsetHeight, imageContainer.width, imageContainer.height);

    controlMC.graphics.endFill();

    maskedContainer.addChild(controlMC);

    //----------------------------------------------

    var activeElement:TransformItem;

    imageContainer.mask = maskMC;

    maskedContainer.x = Math.abs(offsetWidth);

    maskedContainer.y = Math.abs(offsetHeight);

    _tm.addItem(controlMC);

    //----------------------------------------------

    var myItem:TransformItem = _tm.getItem(controlMC);

    myItem.addEventListener(TransformEvent.MOUSE_DOWN, showPos);

    myItem.addEventListener(TransformEvent.MOVE, posFunc);

    myItem.addEventListener(TransformEvent.SCALE, posFunc);

    myItem.addEventListener(TransformEvent.ROTATE, posFunc);

    myItem.addEventListener(TransformEvent.FINISH_INTERACTIVE_MOVE, updateMaskedContainer);

    myItem.addEventListener(TransformEvent.FINISH_INTERACTIVE_SCALE, updateMaskedContainer);

    myItem.addEventListener(TransformEvent.FINISH_INTERACTIVE_ROTATE, updateMaskedContainer);

    //----------------------------------------------

    function updateMaskedContainer($event:Event):void {

    trace("updateMaskedContainer");

    //

    var abstandX:Number = controlMC.x - maskedContainer.x;

    var abstandY:Number = controlMC.y - maskedContainer.y;

    //

    maskedContainer.x += controlMC.x;

    maskedContainer.y += controlMC.y;

    //

    controlMC.x = imageContainer.x = maskMC.x = 0;

    controlMC.y = imageContainer.y = maskMC.y = 0;

    //

    activeElement.update();

    }

     

    function posFunc($event:Event):void {

    activeElement = TransformItem($event.currentTarget);

    //

    var cw:Number = controlMC.width;

    var ch:Number = controlMC.height;

    var cx:Number = controlMC.x;

    var cy:Number = controlMC.y;

    var cr:Number = controlMC.rotation;

    var ratioX:Number = controlMC.scaleX;

    var ratioY:Number = controlMC.scaleY;

    var ratioGesamt:Number = (ratioX>=ratioY) ? ratioX : ratioY;

    var scaleFactor:Number = (ratioGesamt>1) ? ratioGesamt : 1;

    //

    maskMC.x = cx;

    maskMC.y = cy;

    maskMC.scaleX = ratioX;

    maskMC.scaleY = ratioY;

    maskMC.rotation = cr;

    //--------------------------------------------

    imageContainer.scaleX = scaleFactor;

    imageContainer.scaleY = scaleFactor;

    imageContainer.x = cx ;

    imageContainer.y = cy ;

    imageContainer.rotation = cr;

     

    };

  2. I have a strange behaviour with masks.....

    Am I missing some really important or why are the dimensions of the maskedContainer (and therefore also the transform box) 400x400

    and not only 200x200 like the maskMC which is masking the imageContainer?

     

    Here is a example:

    //:::::::::::::::::::::::::::::::::::::::::::::::::::

    //----

    //imports

    import gs.events.TransformEvent;

    import gs.transform.TransformItem;

    import gs.transform.TransformManager;

    //----

    // set up transform manager

    var _tm: TransformManager = new TransformManager();

    //----

    // container which should be transformed

    var maskedContainer:MovieClip = new MovieClip();

    addChild(maskedContainer);

    //----------------------------------------------

    // image container with mask

    //

    var maskMC:MovieClip = new MovieClip();

    maskMC.graphics.beginFill(0x000066);

    maskMC.graphics.drawRect(0, 0, 200, 200);

    maskMC.graphics.endFill();

    maskedContainer.addChild(maskMC);

    //

    var imageContainer:MovieClip = new MovieClip();

    imageContainer.graphics.beginFill(0x00FF66);

    imageContainer.graphics.drawRect(0, 0, 400, 400);

    imageContainer.graphics.endFill();

    maskedContainer.addChild(imageContainer);

    //

    //----------------------------------------------

    imageContainer.mask = maskMC;

    _tm.addItem(maskedContainer);

    //:::::::::::::::::::::::::::::::::::::::::::::::::::

     

    THX 4 HELP

  3. i always use something like this:

     

    //method to move up depth

    private function swapDepthsGO($e:MouseEvent) : void {

    var atm:TransformManager = fooClip._tm; // my active TransformManager

    var objectsLen:int = atm.targetObjects.length; // length of all items which are registered with the TransformManager

    depthCounter = 0; // inits my depth counter

    depthID = setInterval(moveSelectionDepth,5,atm,objectsLen,1); // starts changing the depth 1 = up || -1 = down

    }

     

    //method to move down depth

    private function swapDepthsGU($e:MouseEvent) : void {

    var atm:TransformManager = fooClip._tm; // my active TransformManager

    var objectsLen:int = atm.targetObjects.length; // length of all items which are registered with the TransformManager

    depthCounter = 0; // inits my depth counter

    depthID = setInterval(moveSelectionDepth,5,atm,objectsLen,1); // starts changing the depth 1 = up || -1 = down

    }

    //

    private function moveSelectionDepth($atm,$len:int,$direction:int=1):void{

    if(++depthCounter>$len){

    clearInterval(depthID);

    }else {

    if($direction==-1){

    $atm.moveSelectionDepthDown();

    }else{

    $atm.moveSelectionDepthUp();

    }

    }

    }

  4. I just have found a bug in the TransformManager-Class:

     

    Everytime you use the method "moveSelectionDepth" it makes the sorting wrong if you have more than 9 elements

     

    the line where you sort the depths for the items is >>> curDepths.sortOn("depth");

    but should be >>> curDepths.sortOn("depth",Array.NUMERIC);

     

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Look here:

    http://livedocs.adobe.com/flash/9.0/mai ... 05045.html

     

    By default, Array.sortOn() works as described in the following list:

    * Sorting is case-sensitive (Z precedes a).

    * Sorting is ascending (a precedes B).

    * The array is modified to reflect the sort order; multiple elements that have identical sort fields are placed consecutively in the sorted array in no particular order.

    * Numeric fields are sorted as if they were strings, so 100 precedes 99, because "1" is a lower string value than "9".

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  5. ok for example:

    i have two textfields on my canvas

    now i want to put the selected textfield one layer behind

     

    so i catch the index of these two textfields and swap them with swapChildrenAt(selectedChildIndex,otherChildIndex)

    than the selected textfield is in the back of the other textfield -> so everything works

     

    but if i move the selected textfield after that action -> the other textfield disapears from the canvas

     

    what could be the mistake?

  6. Hi,

     

    i try to create a layer manager wher i can push buttons to push selected items forward or backward on the canvas.

     

    Now i use numChildrens() to see how many Childs are on the canvas. Then i have seen that allways i add a textField

    to the Transformmanager theres another textField placed. But it is not visible.

     

    Is it normal that Transformmanager placed always a second textField?

    If i do that with movieclips this doesn´t happend.

     

    Here is my code snippet from the function which placed a textField on the canvas:

     

    public function textfeldPlatzieren() {
    
    		tf = new TextField();
    
    		leinwand.addChild(tf);
    
    		trace("children1 "+leinwand.numChildren);
    		for (var i:Number=0; i < leinwand.numChildren; i++)
    		{
    			if(leinwand.getChildAt(i) is TextField){
    
    				var obj = leinwand.getChildAt(i);
    				trace(i+" : " + obj + " - " + obj.text);
    			}
    		}
    
    	        trace("children2 "+leinwand.numChildren);
    		transformManager.addItem(tf);
    		trace("children3 "+leinwand.numChildren);
    	}
    

     

    on trace "children2" is only one textField - on trace "children3" after addItem there is a second textField

×
×
  • Create New...