2010-09-12 59 views
2

所以我有这个精灵是说任意100 x 100这是添加到舞台上。现在当内容被添加到这个精灵时,精灵会自动扩展。我不希望这种情况发生,我想要的是设置一个定义的边界,即100 x 100,如果添加的内容太多,我可以滚动它。我的问题是我不能像传统的方式添加面具到舞台上,因为我有许多其他的盒子,这些盒子在尺寸和数量上各不相同。我发现了一种方法,我可以做到这一点,但效率非常低,我做的是我创建了一个动画片段,用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); 
+0

我很难理解你是什么试图实现。如果您尝试将内容限制为设定大小,则可以将其屏蔽,或使用位图API绘图函数绘制矩形。我没有看到掩盖它有什么问题... – Daniel 2010-09-12 04:40:09

回答

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

+0

这是真棒,工作就像一个魅力!真的很感激它。 – 1337holiday 2010-09-13 00:44:00