views:

25

answers:

1

So i have this sprite that is say arbitrarily 100 x 100 which is added to the stage. Now when content is added to this sprite the sprite expands automatically as it should. I dont want this to happen, what i want is to set a defined boundary i.e. 100 x 100, if too much content is added i can be able to scroll it. My problem is i cannot add a mask to the stage like the conventional way because i have many other boxes like this that vary in dimensions and number. I found a way i can do this but its very inefficient, what i did is i created a movieclip filled it say 100x100 with some color then instantiated it. Next i added the sprite and if content overlaps it wont be visible, only 100x100. I sort of stumbled on this and dont know exactly why this works. Any help is well appreciated, thank you.

Here is the code.

//a movieclip with its linkage called containerMasker has a blue square that serves as the mask

var myMasker = new containerMasker(); //the mask
var myContainer = new Sprite(); //the content being masked
//x and y coordinates fixed for both items, width also but no height

myMasker.addChild(myContainer);
addChild(myMasker);
+2  A: 

here's the standard way

myContainer.mask = myMasker;
addChild(myContainer);
addChild(myMasker);

now, if you need to do this with many boxes you could create a class to handle it

public class MaskedItem extends MovieClip
{
  public function MaskedItem(params:Object)
  {  
      var masker:Sprite = new Sprite();
      masker.graphics.beginFill(0);
      masker.graphics.drawRect( 0 , 0 , params.maskWidth , params.maskHeight );
      masker.graphics.endFill();

      var mc:MovieClip = params.displayObject as MovieClip;
      mc.mask = masker;

      addChild( masker );
      addChild( mc );
  }
}

then you could do

 var mc1:MovieClip = new MaskedItem({maskWidth:100, maskHeight:100 , displayObject:mc1} );

PatrickS
Dude this is awesome, worked like a charm! Really appreciate it.
1337holiday