Эффект золотого тиснения - это очень популярный эффект, особенно если речь идёт о текстовых эффектах. Нередко он используется и в flash-роликах. Причём рецептов реализации этого эффекта во Flash великое множество. И сегодня я продемонстрирую один из способов создания эффекта золотого тиснения с помощью возможностей языка ActionScript.
Итак, приступим. Первым делом, надо создать текстовое поле. Я сгенерирую его исключительно кодом ActionScript 3.0, но это не играет принципиальной роли. Вы можете создать текстовое поле и вручную в редакторе Adobe Flash...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
/*
форматирование текста
*/
var fTxt:TextFormat = new TextFormat();
fTxt.align = TextFormatAlign.CENTER;
fTxt.size = 64;
fTxt.bold = true;
fTxt.color = 0xffcc00;
fTxt.font = "Verdana";
/*
текстовое поле
*/
var txtField:TextField = new TextField();
txtField.defaultTextFormat = fTxt;
txtField.width = 550;
txtField.height = 100;
txtField.selectable = false;
txtField.text = "2012";
addChild(txtField);
txtField.x = 0;
txtField.y = 150;
А теперь самое важное - добавим к нашему текстовому полю фильтры GradientBevelFilter и DropShadowFilter...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.filters.GradientBevelFilter;
import flash.filters.DropShadowFilter;
import flash.filters.BitmapFilterQuality;
/*
форматирование текста
*/
var tf:TextFormat = new TextFormat();
tf.align = TextFormatAlign.CENTER;
tf.size = 64;
tf.bold = true;
tf.color = 0xffdd00;
tf.font = "Verdana";
/*
текстовое поле
*/
var txtField:TextField = new TextField();
txtField.defaultTextFormat = tf;
txtField.width = 550;
txtField.height = 100;
txtField.selectable = false;
txtField.text = "2012";
addChild(txtField);
txtField.x = 0;
txtField.y = 150;
/*
применение к текстовому полу фильтров
*/
txtField.filters = [new GradientBevelFilter(5,45,[0xcc0000,0xffffff,0xcc6600],[0.6,0.2,0.6],[0,127,255],5,5,1,1), new DropShadowFilter(2,45,0x000000,1,3,3,1,3)];
Результат:
Вот, в принципе, и всё. Можно, конечно, поспорить о художественных достоинствах данного текстового эффекта, а также о его ресурсоёмкости, но на всех, как известно, не угодишь. С другой стороны, этот приём невероятно прост. Кроме этого, его можно взять за основу при создании других текстовых эффектов для flash-роликов.
Приведённый выше рецепт можно адаптировать и для ActionScript 2.0...
Код ActionScript 2.0:
/*
импорт классов
*/
import flash.filters.*;
/*
форматирование текста
*/
var tf:TextFormat = new TextFormat();
tf.align = "center";
tf.size = 64;
tf.bold = true;
tf.color = 0xffdd00;
tf.font = "Verdana";
/*
текстовое поле
*/
var txtField:TextField = _root.createTextField("txtField", 0, 0, 0, 550, 100);
txtField.selectable = false;
txtField.text = "2012";
txtField.setTextFormat(tf);
txtField._x = 0;
txtField._y = 150;
/*
применение к текстовому полу фильтров
*/
txtField.filters = [new GradientBevelFilter(5, 45, [0xcc0000, 0xffffff, 0xcc6600], [0.6, 0.2, 0.6], [0, 127, 255], 5, 5, 1, 1), new DropShadowFilter(2, 45, 0x000000, 1, 3, 3, 1, 3)];
Результат будет точно таким же, как и в приведённом выше флеш-ролике.
Скачать исходники к данному уроку (под Adobe Flash CS 5.5).
UPD 2012-07-23:
Мне тут сказали, что градиент у меня "неправильный" и предложили следующий вариант...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.filters.GradientBevelFilter;
import flash.filters.DropShadowFilter;
import flash.filters.BitmapFilterQuality;
/*
форматирование текста
*/
var tf:TextFormat = new TextFormat ;
tf.align = TextFormatAlign.CENTER;
tf.size = 64;
tf.bold = true;
tf.color = 0xffdd00;
tf.font = "Verdana";
/*
текстовое поле
*/
var txtField:TextField = new TextField ;
txtField.defaultTextFormat = tf;
txtField.width = 550;
txtField.height = 100;
txtField.selectable = false;
txtField.text = "2012";
addChild(txtField);
txtField.x = 0;
txtField.y = 150;
/*
применение к текстовому полу фильтров
*/
txtField.filters = [new GradientBevelFilter(5,45,[0xF7E088,0xC9AE5E,0x95712D,0xFFF1A1],[1,1,1,1],[0,100,127,200],5,5,1,1), new DropShadowFilter(2,45,0x000000,1,3,3,1,3)];
Результат:
Да, пожалуй, так эффект выглядит более реалистичным :-)