|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
рисование\удаление масок
Возникла проблема с перерисовкой масок, вот код :
conteinerForMask = new Sprite(); addChild(conteinerForMask); conteinerForMask.addEventListener(MouseEvent.MOUSE_DOWN, canMakeClean); conteinerForMask.addEventListener(MouseEvent.MOUSE_UP, cantMakeClean); conteinerForMask.addEventListener(MouseEvent.MOUSE_MOVE, makeCleanStep1); private function drawMaskForStepShower():void { switch (numStepShower) { case 1 : DrawSlotForMasks(); slotForRemove(lib.Lib_Face_1); slotForDraw(lib.Lib_Face_2); startCountPixels = getCountPixels(); break; case 2 : DrawSlotForMasks(); slotForRemove(lib.Lib_Face_2); slotForDraw(lib.Lib_Face_3); startCountPixels = getCountPixels(); break; default : // error break; } } private function DrawSlotForMasks():void{ FaceShowerSpriteForDraw = new Sprite(); FaceShowerSpriteForRemove = new Sprite(); FaceShowerSpriteForRemove.blendMode = BlendMode.LAYER; conteinerForMask.addChild(FaceShowerSpriteForRemove); conteinerForMask.addChild(FaceShowerSpriteForDraw); } private function slotForDraw(mc:MovieClip):void { mc.cacheAsBitmap = true; mc.mask = currentItemForDraw; FaceShowerSpriteForDraw.addChild(mc); } private function slotForRemove(_mc:MovieClip):void { var mcremove:MovieClip = new MovieClip(); mcremove = _mc; mcremove.cacheAsBitmap = true; mcremove.blendMode = BlendMode.LAYER; FaceShowerSpriteForRemove.addChild(mcremove); var mcDel:MovieClip = new MovieClip(); mcDel.graphics.beginFill(0x000000); mcDel.graphics.drawRect(0, 0, 200, 300); mcDel.graphics.endFill(); mcDel.cacheAsBitmap = true; mcDel.blendMode = BlendMode.ERASE; mcDel.mask = currentItemForRemove; FaceShowerSpriteForRemove.addChild(mcDel); } private function cantMakeClean(e:MouseEvent):void { currentItemForRemove.Clean = false; } private function canMakeClean(e:MouseEvent):void { currentItemForRemove.Clean = true; } private function makeCleanStep1(e:MouseEvent):void { if (currentItemForRemove.Clean) { currentItemForRemove.graphics.beginFill(0xff00ff); currentItemForRemove.graphics.drawCircle(mouseX, mouseY, 20); currentItemForRemove.graphics.endFill(); currentItemForDraw.graphics.beginFill(0xff00ff); currentItemForDraw.graphics.drawCircle(mouseX, mouseY, 20); currentItemForDraw.graphics.endFill(); } } //очистка происходит так : numStepShower++; conteinerForMask.removeChild(FaceShowerSpriteForRemove); conteinerForMask.removeChild(FaceShowerSpriteForDraw); FaceShowerSpriteForDraw = null; FaceShowerSpriteForRemove = null; drawMaskForStepShower(); Или может есть другой способ удаление одной маски и нанесение сверху сразу другой ? |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
когда срабатывают события по главному спрайту conteinerForMask получается делаю действие сразу на двух масках одновременно удаляю и тут-же наношу другую.Проблема в том что по второму кругу так же само не сделать, без понятия почему он не хочет... Добавлено через 3 часа 12 минут Проблема решена вот что не хватало в очистке : может кому-то пригодиться. Последний раз редактировалось GrafMine; 13.07.2014 в 14:38. |
Часовой пояс GMT +4, время: 12:33. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|