Полезные ссылки

Построитель стилей

Природа не понимает шуток. Она всегда честна, всегда серьёзна, всегда сурова. Она всегда права, а ошибки и промахи делают только люди. Человек, который относится к природе с пренебрижением, не способен её оценить, и только понимающему, чистому и правдивому, она покоряется и открывает свои тайны.
Иоган Вольфнг фон Гёте
Блог
Водяные знаки
25.01.2010 14:27

Встала передо мной задача сделать водяной знак во Flex приложении, чтобы в итоге получилось как на картинке:

watersign_1

Решение оказалось не самым тривиальным:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200"
backgroundColor="0xffffff" backgroundGradientColors="0xffffff,0xffffff">
<mx:Script>
<![CDATA[
private var _filtered:Boolean = false;
private function addFilter() : void {
if (!_filtered) {
_filtered = true;
var outline:GlowFilter = new GlowFilter();
outline.blurX = outline.blurY = 10;
outline.color = 0x000000;
outline.quality = BitmapFilterQuality.HIGH;
outline.strength = 1;
outline.knockout = true;
var filterArray:Array = new Array();
filterArray.push(outline);
vacLabel.filters = filterArray;
//vacLabel.rotation = 345;
}
}
]]>
</mx:Script>
<mx:VBox width="100%" height="100%" horizontalAlign="center">
<mx:HBox height="100%" verticalAlign="middle">
<mx:Button label="Button" fillAlphas="[1.0, 1.0]" fillColors="[#90ACFC, #8BA9FF]"/>
</mx:HBox>
</mx:VBox>
<mx:Label id="vacLabel" width="100%" y="75" textAlign="center" fontSize="170" alpha="0.75" scaleX="0.28" scaleY="0.28"
text="Водяной знак" fontFamily="Georgia" fontWeight="bold" fontAntiAliasType="advanced" addedToStage="addFilter()" z="10"/>\
</mx:Application>

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200"
backgroundColor="0xffffff" backgroundGradientColors="0xffffff,0xffffff">
<mx:Script>
<![CDATA[
 
private var _filtered:Boolean = false;
 
private function addFilter() : void {
if (!_filtered) {
_filtered = true;
var outline:GlowFilter = new GlowFilter();
outline.blurX = outline.blurY = 10;
outline.color = 0x000000;
outline.quality = BitmapFilterQuality.HIGH;
outline.strength = 1;
outline.knockout = true;
 
var filterArray:Array = new Array();
filterArray.push(outline);
vacLabel.filters = filterArray;
}
}

]]>
</mx:Script>
<mx:VBox width="100%" height="100%" horizontalAlign="center">
<mx:HBox height="100%" verticalAlign="middle">
<mx:Button label="Button" fillAlphas="[1.0, 1.0]" fillColors="[#90ACFC, #8BA9FF]"/>
</mx:HBox>
</mx:VBox>
<mx:Label id="vacLabel" width="100%" y="75" textAlign="center" fontSize="170" alpha="0.75" scaleX="0.28" scaleY="0.28"
text="Водяной знак" fontFamily="Georgia" fontWeight="bold" fontAntiAliasType="advanced" addedToStage="addFilter()"/>
</mx:Application>

Первое на что стоит обратить внимание - это на то, что при определении фильтра надо использовать параметр knockout. Данный параметр отвечает за вырезание базы для фильтра. Следующий код "вырезает" основной текст из отображаемой картинки, оставляя только результаты своего применения.

outline.knockout = true;

Второе, что для достижения достаточно маленького и чёткого  распыления границ используется очень большой размер шрифта, который потом уменьшается, используя свойства scaleX scaleY для объекта Label.

 
Ошибка при установке AIR - Error #2032
18.10.2009 20:58

При использовании Air инсталятора от Adobe у меня возникла неприличная ситуация. При начале процесса скачивания приложения, появляется следующее окно с ошибкой

Подробнее...
 
Контекстное меню в AdvancedDataGrid
12.10.2009 10:15

Во флексе есть удобный по своей задумке компонент AdvancedDataGrid. Для пользователя это очень удобный компонент, который может делать приятные вещи. Но для разработчиков этот компонент сущая головная боль. Одним из вопросов часто бывает, а как вставить контекстное меню в таблицу, ведь нажатие правой клавиши мыши не приводит к выделению компонента, да из самого события нельзя понять куда же пользователь кликнул мышкой. Следовательно нет возможности правильно отобразить контекстное меню.

Подробнее...
 
Повышение производительности AS3 приложений
09.10.2009 10:28
Данную статью я взял (без разрешения) из блога http://gorbatov.blogspot.com/2008/03/as3.html. Просто, чтобы не потерять для себя. От себя ни чего не добавлено и не исправлено.
Подробнее...
 
AdvancedDataGrid cортировка
06.10.2009 16:17

Необходимо стало мне сделать автоматическую сортировку AdvancedDataGrid по одному из столбцов. Долго я ходил окольными путями пока не нашёл самый простой выход.

dataGrid.dataProvider.sort = new Sort();
var field:SortField = new SortField("priority");

dataGrid.dataProvider.sort.fields = [ field ];
dataGrid.dataProvider.refresh();

 
Создание Flex-приложений c использованием Parsley. Часть 3, MVC
02.10.2009 21:20

Рассмотрев некоторые аспекты работы с применением Parsley можно сформулировать некоторые аспекты как данная библиотека поможет нам построить гибкое, масштабируемое и, самое главное, хорошо разделённое на модули приложение.

Tags: Flex Parsley
Подробнее...
 
Создание Flex-приложений c использованием Parsley. Часть 2, обмен данными
28.09.2009 17:32

В предыдущей статье, я начал рассказ о технологии, которая позволяет гибко конфигурировать Flex приложение, где рассмотрел первый аспект, а именно связывание различных компонентов приложения в одно целое. В данной статье хочу подробнее остановиться на организации модели обмена данными в приложении созданном с использованием Parsley.

Подробнее...
 
Создание Flex-приложений c использованием Parsley. Часть 1, связывание
27.09.2009 20:36
Когда мы начинаем писать приложение, на любой технологии, мы хотим написать "правильный" код, который позволял бы нам легко менять структуру приложения взаимосвязи между различными компонентами приложения. Хочется, чтобы одни модули/части проекта не зависели от других для дальнейшего использования.
Подробнее...
 
Принципы организации выкладываемых примеров
10.07.2009 09:25

В этом сообщении, я хочу изложить общие правила, которые я буду соблюдать при выкладывании своих примеров в дальнейшем.

Подробнее...
 
Связываем Flex(Air) и Базу данных, используя RemoteObject, BlazeDS, Spring и Hibernate
28.06.2009 22:57

В прошлой статье я описал настройку связи Java сервера и Flex (Air) келиента, используя BlazeDS под управлением Spring. В этой статье мы добавим связь с БД (Postgres 8.3) используя набор библиотек Hibernate3.

Подробнее...
 
Жизненный цикл Flex компонентов
27.06.2009 00:00

Жизненый цикл компонентов во flex, похож на тот, который был в предыдущей 2-ой версии, когда вы создаёте хранилище, добавляете дочерние объекты, задаёте размер и генерируете событие. Следующие четыре метода играют роль для отображения компонента.

Подробнее...
 
Связываем Java и Flex в Air используя BlazeDs через Spring
20.06.2009 11:07

Встала передо мной интересная задачка, написать маленькое Air приложение, которое получала бы данные с Java сервера. Использовать XML для таких задач - это против моей сущности. Не люблю я это дело. По этому сразу был взят курс на технологии LiveCycleDs и BlazeDs. Первая технология хороша, но очень уж дорога. BlazeDS бесплатна и свободо распрострянается. Её возможностей более чем за глаза хватает для решения поставленной передо мной задачи. Т.к. задача предполагает обращение к БД, то в дальнейшем планируется использовать Hibernate. И чтоб не завязываться на ручное инициализирование сессий и разруливание всяких проблемм с пулом соединений было принято решение использовать Spring для связи всё в единое пространство на стороне сервера.

Подробнее...
 
Аннотация для RemoteOBject в BlazeDS
17.06.2009 21:02

Очень часто бывает, что при использовании Hibernate, на серверной стороне Java, для исключения избыточности данных, часть полей помечаются как ленивые (lazy="true"). И в этом случае, когда данные сериализуются для передачи данных во Flex-уровень возникает LazyInitializationException. Очень желательно оградить такие поля от сериализации, так же бывает необходимо по различным причинам исключить часть полей из сериализации из Java-уровня во Flex.

 

Подробнее...