Если вы еще не знаете, то Vector — это новый класс во Flash Player 10. По способу использования он является типизированным массивом, о котором мечали еще флэшеры семидесятых. Vector не только типизирован, но и дает более производительный код (очевидно, его внутрення природа — не простая обертка вокруг массива). Вот статья по классу Vector для начинающих.
Еще легче, чем кодироват. Пара минут может уйти на привыкание к синтаксису. Он немного сложнее, чем у массива, потому что вектор строго типизирован. Поэтому везде, где вы имеете дело с вектором, нужно после обозначения типа и точки дополнительно в треугольных скобках указать тип хранимых в векторе значений. Например, String для вектора строк:
var stringVector : Vector.<String> = new Vector.<String>();
Когда я впервые использовал Vector, то сделал синтаксические ошибки в каждом случае его применения, по привычке работал как с нетипизированным массивом. Но с векторами нужен векторный синтаксис. В этом примере две ошибки:
public function findDuplicates(text : String) : Vector
{
var result : Vector = new Vector.<Duplicate>();
...
return result
}Первая ошибка исправляется указанием полного типа вектора при объявлении переменной:
var result: Vector.<Duplicate> = new Vector.<Duplicate>();
Вторая исправляется указанием полного типа вектора возвращаемого результата:
public function findDuplicates(text : String) : Vector.<Duplicate>
(в примере <Duplicate> — это тип данных вектора, тут используется собственный класс, а на его месте можеть быть int, Date и т.д.)
Дочитали до этой фразы и стало скучно, используете вектор уже восемь-десять лет? Есть информация для продвинутых вектор-юзеров в ActionScript — динамическое создание экземпляров класса Vector и тест Array vs. Vector vs. Linked list.
Дочитали досюда? Круто *-)
Работа с растровыми изображаениями в FP10 имеет минимум два преимущества по сравнению с Flash Player 9: максимальный размер стал больше, а скорость стала выше.
Во Flash Player 9 мы могли обрабатывать изображение размером 8294400 пикселей, т.е. 8 мегапикселей, что соответствует квадрату со сторонами до 2880x2880 пкс.
Во Flash Player 10 максимальный размер BitmapData не только увеличен до шестнадцатиричного 0xFFFFFF (т.е. 16777215, или 16 мпкс), что соответстует максимальному квадрату со сторонами 4095x4095 пкс, но и появилась гибкость в его использовании. Вот в чем она заключается: вы можете распределять этот максимальный размер нужным вам образом, создавая не-квадратную картинку. Т.е. теперь можно не только получить квадратную картинку размером 4095x4095, но и прямоугольную, с макcимальной длиной стороны до 8191 пкс. Главное, чтобы перемноженные длины ее сторон укладывалось в максимальное количество пикселей. Например, во Flash Player 10 возможны картинки 2048x8191 и 8191x2048. То же самое на английском у Кейта Петерса (новость уже не такая новость).
Для работы с большими картинками нужны быстрые алгоритмы, и здесь Flash Player 10 предлагает новый класс Vector и BitmapData.setVector(), который годится для ускорения практически любого алгоритма, активно использующего операции с массивами. Класс JPEGEncoder из состава corelib подходит под этот случай, и вот его авторы ускоряют сжатие BitmapData в JPEG. Вы можете почитать этот пост и пропробовать сами размещенную в нем демку, а также скачать обновленный класс JPEGEncoder.
* Использовали байтовые (bitwise) oператоры, где только можно.
* Заменили все массивы на векторы фиксированной длины.
* Использовали пред-инкремент (++i) вместо пост-инкремента (i++).
* Преобразовали (casted) к типу int все индексы доступа к векторам.
Говорят, что во Flash Player 11 будет оператор подергивания --i++
Aviary, ранее выпустившие онлайновые графический редактор Aviary Phoenix и генератор паттернов Aviary Peacock, выпустили онлайновый векторный редактор Raven.
Если вам нужно сделать логотип, векторный клип-арт, дизайн футблоки — он справится. Демки и скринкаст можно увидеть в блоге Aviary.
Примеры готовых работ — в галерее векторного редактора Raven.
![Флэш Потрошитель - Флэш & Флекс, rost[ухо]flash-ripper.com](/sites/all/themes/fripper/logo.png)