![]() |
|
||||||||||
|
|||||
|
подскажите пожалуйста, как на AS3 сделать подобный эффект:
http://www.silin.su/#AS2/glass |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Маска + блур эффект
Добавлено через 1 минуту В динамике - так же. Клип + его копия поверх. Только из кода. Добавлено через 2 минуты Аааа... Там сорсы есть. Тогда не интересно... |
|
|||||
|
А что значит "через порт"?
|
|
|||||
|
это значит портировать. т.е. переписать логику на другом языке, возможно с заменой/оптимизацией некоторых блоков кода с учетом специфики/инструментария языка.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
ясно. Ну буду пробовать портировать
![]() |
|
|||||
|
Получилось перепортировать!
![]() Осталось решить одну проблемку)) Как сделать так чтобы при прорисовке выбранного мувиклипа (а не всей сцены) учитывался и его масштаб. А то получается неправильное смещение при масштабировании того клипа с которого я беру информацию для размытия! package { import flash.filters.*; import flash.geom.*; import flash.display.*; import flash.events.*; public class Frosted extends MovieClip { private var glassColor:Number=0xD9FFFF; private var glassAlpha:Number=.35; private var mousePoint:Point = new Point(mouseX,mouseY); private var alphaScreen:Sprite; private var blurScreen:Sprite; private var blurBmd:BitmapData; private var blurBitmap:Bitmap; private var w:uint= width; private var h:uint= height; private var lowDepth:uint = 0; public function Frosted():void { ////////////// var bounds=getBounds(this); blurScreen = new Sprite(); alphaScreen = new Sprite(); effects_mc = new Sprite(); effects_mc.addChild(blurScreen); effects_mc.addChild(alphaScreen); effects_mc.setChildIndex(blurScreen, 0); effects_mc.setChildIndex(alphaScreen, 1); effects_mc.mask = blur_mask; createTexture(); this.addChild(effects_mc); alphaScreen.x=blurScreen.x=bounds.x; alphaScreen.y=blurScreen.y=bounds.y; alphaScreen.graphics.beginFill(glassColor,glassAlpha); alphaScreen.graphics.lineTo(w,0); alphaScreen.graphics.lineTo(w,h); alphaScreen.graphics.lineTo(0,h); alphaScreen.graphics.endFill(); //////// blurBmd = new BitmapData(w,h, false, 0x808080); blurBitmap = new Bitmap(blurBmd); blurScreen.addChildAt(blurBitmap,0); getScreen(); render(); this.addEventListener(MouseEvent.MOUSE_DOWN, Press); this.addEventListener(MouseEvent.MOUSE_UP, Release); trace(this.numChildren); } function Press(e:MouseEvent):void { mousePoint=new Point(mouseX,mouseY); this.addEventListener(Event.ENTER_FRAME, render); } function Release(e:MouseEvent):void { this.removeEventListener(Event.ENTER_FRAME, render); } function render(e:Event = null):void { x+=mouseX-mousePoint.x; y+=mouseY-mousePoint.y; mousePoint=new Point(mouseX,mouseY); getScreen(); } function getScreen() { var p:Point=new Point(x,y); parent.localToGlobal(p); var tx:Number=-(p.x+blurScreen.x); var ty:Number=-(p.y+blurScreen.y); var mtrx=new Matrix(1,0,0,1,tx,ty); visible=false; blurBmd.draw(root.all_bg,mtrx); // Вот в этой строчке я беру инфу из выбранного мувика и ресую её в размытие. Но при этом берётся реальный размер, а мне надо с учётом масштаба. visible=true; blurBmd.applyFilter(blurBmd,blurBmd.rect,new Point(),new BlurFilter(1,1,3)); } function createTexture():void { var noiseBmd:BitmapData = new BitmapData(w, h); var seed:Number = Math.floor(Math.random()*100); noiseBmd.noise(seed, 210, 250, 7, true); var noiseBitmap:Bitmap = new Bitmap(noiseBmd); effects_mc.addChildAt(noiseBitmap, 1); noiseBitmap.alpha = 0.25; //noiseBitmap.mask = blur_mask; } } } Последний раз редактировалось Universe; 24.01.2011 в 13:38. |
|
|||||
|
И ещё один трабл: как сделать так, чтобы в размытой битмепдате прорисовывалось всё что находится ниже мувика с блуром, но ничего что выше него?
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Хранить список всех объектов. Выбирать те, что ниже по индексу Depth.
|
|
|||||
|
все что нужно отрисовать - запихнуть в отдельный контейнер и рисовать его.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|