Динамична маска в ActionScript 3
Така нареченото маскиране може да се приложи към обекти в списъка за показване на Flash филм. Маскиране - това е, когато друг обект-маска се постави върху един видим обект, от който ще зависи показването на обекта по-долу. Да, доста е трудно да се обясни с думи. Нека по-добре да се обърнем към пример.
Код на ActionScript 3.0:
/ * спрайтът, към който ще бъде приложена маската */var спрайт: Sprite = нов Sprite (); sprite.graphics.beginFill (0x333333,1); sprite.graphics.drawRect (0,0,550,400); sprite.graphics.endFill (); addChild (спрайт);/* спрайт маска */var sprite_mask: Sprite = нов Sprite (); sprite_mask.graphics.beginFill (0xff0000,1); sprite_mask.graphics.drawCircle (275 200,50); sprite_mask.graphics.endFill (); addChild (спрайт_маска);/* прилага маската */sprite.mask = sprite_mask;
Тук първо създадохме 550 х 400 px сив спрайт правоъгълник. След това създадохме 50 px червен спрайт кръг и го позиционирахме над правоъгълника, който създадохме по-рано. Накрая използваме собствеността маска (именно това е отговорно за маскирането на езика ActionScript) декларира, че спрайтът на кръга ще бъде маската за спрайта на правоъгълника.
Какъв ще е резултатът?
Ако компилираме горния код, ще получим видео, в което той ще бъде видим. само сив кръг. Нашата маска работи.
Както можете да видите, всичко е просто, но полезно.
Нека усложним примера и направим нашата маска динамична. Например, нека позволим на потребителя да плъзне маската през сцената на флаш филма (относно самото плъзгане, вижте публикацията Програмно плъзгане на обекти във флаш филми).
Код на ActionScript 3.0:
/ * спрайт, за да приложите маската към */var спрайт: Sprite = нов Sprite (); sprite.graphics.beginFill (0x333333,1); sprite.graphics.drawRect (0,0,550,400); sprite.graphics.endFill (); addChild (спрайт);/* спрайт маска */var sprite_mask: Sprite = нов Sprite (); sprite_mask.graphics.beginFill (0x333333,1); sprite_mask.graphics.drawCircle (0,0,50); sprite_mask.graphics.endFill (); addChild (спрайт_маска);/* направете маската с плъзгане */addEventListener (MouseEvent.MOUSE_DOWN, mDown); функция mDown (събитие: MouseEvent): void < sprite_mask.startDrag(true, new Rectangle(0,0,550,400)); >addEventListener (MouseEvent.MOUSE_UP, mUp); функция mUp (събитие: MouseEvent): void < sprite_mask.stopDrag(); >/ * прилага маската */sprite.mask = sprite_mask;