设置精灵的掩码

133*_*day 2 flash mask sprite actionscript-3

所以我有这个精灵,任意说100 x 100,它被添加到舞台上.现在,当内容被添加到此精灵时,精灵会自动扩展.我不希望这种情况发生,我想要的是设置一个定义的边界,即100 x 100,如果添加了太多的内容,我可以滚动它.我的问题是我不能像传统的方式一样在舞台上添加一个面具,因为我有许多其他类似于尺寸和数量的盒子.我找到了一种方法,我可以做到这一点,但效率非常低,我做的是我创建了一个movieclip填充它说100x100用一些颜色然后实例化它.接下来我添加了精灵,如果内容重叠,它将不可见,只有100x100.我偶然发现了这一点,并且不知道为什么会这样.非常感谢任何帮助,谢谢.

这是代码.

//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);
Run Code Online (Sandbox Code Playgroud)

Pat*_*ckS 7

这是标准方式

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

现在,如果您需要使用多个框来执行此操作,则可以创建一个类来处理它

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 );
  }
}

那么你可以做到

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