2010-09-12 3 views
2

Итак, у меня есть этот спрайт, который называется произвольно 100 х 100, который добавляется на сцену. Теперь, когда контент добавляется к этому спрайту, спрайт автоматически расширяется, как следует. Я не хочу, чтобы это произошло, я хочу установить определенную границу, то есть 100 х 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

ответ

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