![]() |
|
||||||||||
|
|||||
package
{
import flash.display.*;
import flash.text.*;
public class Main extends Sprite
{
public function Main():void
{
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = "hello";
tf.setTextFormat(new TextFormat("_sans", 96));
var distortFilter:Distort = new Distort(tf.width,tf.height);
tf.filters = [distortFilter.filter];
addChild(tf);
}
}
}
package
{
import flash.display.*;
import flash.filters.*;
public class Distort
{
public var filter:DisplacementMapFilter = new DisplacementMapFilter();
public function Distort(w:Number,h:Number)
{
filter.componentY = BitmapDataChannel.RED;
filter.mode = DisplacementMapFilterMode.CLAMP;
filter.scaleY = 0.5 * h;
filter.mapBitmap = new BitmapData(w, h, false, 0x808080);
for (var i:int = 0; i < w; i++) {
var kx:Number = 1 - 4 * (i/w - 0.5) * (i/w - 0.5);
for (var j:int = 0; j < h; j++) {
var ky:Number = j / h;
var r:int = Math.floor(128 * kx * ky);
filter.mapBitmap.setPixel(i, j, r << 16 );
}
}
}
}
}
|
|
|||||
|
Если градиент рисовать во флеш, в ввиде рисунка, то он должен покрывать область с текстом, а мувик с текстом должен иметь границу, тоже нарисованную, что бы у фильтра было место дествия, если там только текст, то фильтр не сделает правильного искажения, нужно дополнительные полоски или квадрат для границы.
Теперь если искажать вверх вниз Последний раз редактировалось Alex Lexcuk; 06.10.2008 в 00:50. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Большое спасибо!
__________________
Нет ничего невозможного |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|