Руководство по actionscript. часть 5, стр. 049

Сглаживание содержимого, переносимого в объект BitmapData, происходит по отношению к существующему фону в растровом изображении.

Далее мы воспользуемся методом draw ( ) для выполнения растеризации объекта TextField, чтобы можно было применить к нему эффект растворения на уровне пикселов. Этот код представлен в листинге 26.9.

Рис. 26.7. Отображаемые объекты, объединенные в растровом изображении

Листинг 26.9. Растеризация и последующее растворение объекта TextField

package { import flash. display.*; import flash. utils.*; import flash. events.*; import flash. geom.*; import flash. text.*;

public class DissolveText extends Sprite { // Переменные, используемые для эффекта растворения private var randomSeed:int = Math. floor(Math. random( ) * int. MAX_VALUE);

private var destPoint:Point = new Point(0, 0); private var numberOfPixels:int = 10; private var destColor:uint = OxFFOOOOOO;

// Объект, в который будет переноситься текст private var bitmapData.-BitmapData;

// Таймер, используемый для периодического вызова метода pixelDissolve( ) private var t:Timer;

// Конструктор

public function DissolveText ( ) { // Создаем текст

var txt:TextField = new TextField( ); txt. text = «Essential ActionScript 3.0″; txt. autoSize = TextFieldAutoSize. LEFT; txt. textColor = OxFFFFFF;

// Создаем объект BitmapData с размерами, // достаточными для размещения текста

bitmapData = new BitmapData(txt. width, txt. height, false, destColor); // Переносим текст в объект BitmapData bitmapData. draw(txt);

// Связываем объект BitmapData с объектом Bitmap, чтобы отобразить его // на экране

var bitmap:Bitmap = new Bitmap(bitmapData); addChild(bitmap);

// Начинаем периодически вызывать метод pixelDissolve( ) t = new Timer(lO);

t. addEventLi stener(TimerEvent. TIMER, ti merLi stener); t. start( );

}

// Обрабатывает события TimerEvent. TIMER private function timerListener (e:TimerEvent):void { dissolve( );

}

// Выполняет растворение public function dissolve( ):void { // Вызываем метод pixelDissolve( ), чтобы растворить указанное // количество пикселов, и запоминаем возвращенное псевдослучайное // число для следующего раза. Использование возвращаемого // псевдослучайного числа гарантирует плавное растворение. randomSeed = bitmapData. pixelDissolve(bitmapData,

bitmapData. rect,

destPoint,

randomSeed,

numberOfPixels,

destColor);

// Прекращаем растворение, когда все пикселы будут иметь целевой цвет // (то есть когда ширина и высота области, в которой отсутствует // целевой цвет, будут равны 0) var coloredRegion:Rectangle =

bitmapData. getColorBoundsRect(OxFFFFFFFF, destColor, false): if (coloredRegion. width == 0 && coloredRegion. height == 0 ) { t. stop( ):

}

}

}

}

Метод draw ( ) также используется для растеризации векторного содержимого с целью повышения производительности. Например, вспомните простую программу рисования ScribbleAS3, представленную ранее в листинге 26.6. Она рисует точки всякий раз, когда происходит перемещение мыши, но не соединяет нарисованные точки линиями. Одним из способов соединить точки является использование метода экземпляра 1 ineTo ( ) класса Graphics, который рисует векторную линию между двумя точками. Тем не менее применение векторов для рисования линий ограничивает производительность: теоретически можно нарисовать такое количество линий, которое не позволит приложению реагировать на действия пользователя (из-за ограничений в механизме отображения векторов среды выполнения Flash). Для решения этой проблемы мы можем рисовать линии с помощью метода 1 ineTo ( ) в экземпляре класса Shape, не отображаемом на экране. После рисования каждой линии мы копируем ее из объекта Shape в объект BitmapData, после чего очищаем данный экземпляр класса Shape. Поскольку за один раз рисуется только одна векторная линия, приложение никогда не прекратит реагировать на действия пользователя.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 085
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.114
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.78
  • 07.03.2011">Руководство по actionscript. часть 4, стр. 111
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 024
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.77
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 150
  • 09.06.2011">Витамин С подавляет иммунитет
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.85
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 033
  • 23.10.2012">Выпускные альбомы от Принт-а-тет
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 019
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 061
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 139
  • 28.07.2011">Интернет в роли Купидона
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...