Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   DisplacementMapFilter и rotate (http://www.flasher.ru/forum/showthread.php?t=133905)

Mardok 16.12.2009 13:33

DisplacementMapFilter и rotate
 
Доброго времени суток.
Использую в своем проекте DisplacementMapFilter для наложения на текст эффектов как WordArt в тектстовом редакторе MS Word. Кроме этих эффектов текст можно сжимать и крутить. Проблема появилась при оборотах - текст вращается а фильтр как бы остается на месте. Код для DisplacementMapFilter'ов писал не сам, все искал в гугле.
Вот пример фильтра для эффекта "текст по кругу":
Код AS3:

                        // BitmapData под карту
                        var map:BitmapData = new BitmapData (_width, _height, true),
                            w:Number = map.width, h:Number = map.height;
 
                        // меняем K чтобы подвинуть центр
                        var K:Number = _k+1, xK:Number = w/2, yK:Number = K * h;
 
                        // основные геометрические элементы
                        var DG:Number = Math.sqrt (yK * yK - xK * xK);
                        var CGD:Number = Math.acos (DG / yK);
                        var EG:Number = yK * (yK - h) / DG;
 
                        // цветовые множители
                        var af:Number = 16777216, rf:Number = 65536, gf:Number = 256, bf:Number = 1;
 
                        // это слегка попыхтит
                        for (var x:Number = 0; x < w; x++)
                        for (var y:Number = 0; y < h; y++) {
 
                            // угол и расстояние до (x, y)
                            var LG:Number = Math.sqrt ((x - xK) * (x - xK) + (y - yK) * (y - yK));
                            var NGL:Number = CGD + Math.asin ((x - xK) / LG);
 
                            // задаём исходную точку для (x,y)
                            var xS:Number = Math.round (w * NGL / (2 * CGD));
                            var yS:Number = Math.round (h * (yK - LG) / (yK - EG));
 
                            // считаем и сохраняем смещения в синем и зелёном каналах
                            var xSDif:Number, ysDif:Number;
                            if (!revert)
                            {
                                    xSDif = 128 + xS - x;
                                    ysDif = 128 + yS - y;
                            }
                            else
                            {
                                    xSDif = 128 + x - xS;
                                    ysDif = 128 + y - yS;
                            }
                            map.setPixel (x, y, bf * xSDif + gf * ysDif);
                        }
                        _filter = new DisplacementMapFilter(map,
                                new Point(),
                                BitmapDataChannel.BLUE,
                                BitmapDataChannel.GREEN,
                                0xFF,
                                0xFF,
                                DisplacementMapFilterMode.CLAMP)

Подскажите как исправить код что бы фильтр крутился вместе с текстом.

Добавлено через 47 часов 7 минут
проблема актуальна


Часовой пояс GMT +4, время: 01:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.