Установка маски для спрайта - PullRequest
2 голосов
/ 12 сентября 2010

Итак, у меня есть этот спрайт, который называется произвольно 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);

1 Ответ

7 голосов
/ 12 сентября 2010

вот стандартный способ

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

...