![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Доброго времени суток, господа!
Вопрос в следующем: как создаются карты для эффекта DisplacementMapFilter? Посмотрев исходник товарища iNils, я увидел, что вот такая карта (см.вниз) делает такое искажение (см.вниз-вправо). Как добиться других искажений, я плохо понял. Пытался эксперементировать с градиентов в фотошопе, но выходит всякий неадекват. Нужны мне следующие формы - (см. прикреплённый файл с формами). var bmp = BitmapData.loadBitmap("displacementMap2");
mc.filters = [new DisplacementMapFilter(bmp, new Point(),1, 4, 0, 450, 'color',0xffffff, 0x00)];
Если кто может помочь советом, я буду очень благодарен. Заранее всем спасибо... Последний раз редактировалось Crash512; 19.06.2008 в 01:13. |
|
|||||
|
|
|
|||||
|
имхо, дешевле будет получить карту не градиентами, а через setPixel, обычной арифметикой вычисля смещение
подправленный на setPixel пример из хелпа: import flash.filters.DisplacementMapFilter;
import flash.display.BitmapData;
import flash.geom.Point;
var txtBlock:MovieClip = createTextBlock();
var mapBitmap:BitmapData = createMap(txtBlock._width, txtBlock._height);
var filter:DisplacementMapFilter = new DisplacementMapFilter(mapBitmap, new Point(0,10), 1, 1, 0, 200, "clamp", 0, 0);
txtBlock.filters = [filter];
function createMap(w:Number, h:Number):BitmapData
{
var bmp:BitmapData = new BitmapData(w, h);
for(var i=0;i<w;i++){
for(var j=0;j<h;j++){
var r=int(128*(1+i/w*j/h));
bmp.setPixel(i,j,r<<16);
}
}
return bmp;
}
function createTextBlock():MovieClip
{
var txtBlock:MovieClip = this.createEmptyMovieClip("txtBlock", this.getNextHighestDepth());
txtBlock.createTextField("txt", this.getNextHighestDepth(), 0, 0, 0, 0);
txtBlock.txt.autoSize="left";
txtBlock.txt.text = "TEXT & filter";
txtBlock.txt.setTextFormat(new TextFormat("_sans",48,0, true));
return txtBlock;
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|