Создание кнопок и текстовых полей с помощью ActionScript
Суббота, Март 15th, 2008Stas Dolphin
sdgraff.h11.ru
stas_dolphin@list.ru
А вы знали что во Flash можно создавать кнопки и текстовые поля с надписями без использования панели инструментов? Ах, вы знали, но не знали приемущество такого метода? А вот самое большое приемущество - это меньший размер созданного клипа. А если наш клип мало весит, то значит он быстрее будет загружаться.
Ну, а если вы не знаете как это сделать, то я сейчас вам все подробненько расскажу.
Первое, что мы сделаем это какую-нибудь надпись, ну самую простенькую. Значит, открываем панель ActionScript и пишем такой код:
_root.createTextField(”astext”, 2, 10,10, 150, 20);
_root.astext.text = “Наша первая надпись”;
Теперь объясню. Команда “_root.createTextField” создает текстовое поле, значения (”astext”, 2, 10,10, 150, 20) определяют свойства. “Astext” - это имя созданного текстового поля, т.е. instanceName, “10,10″ - задает место расположение, т.е. X и Y соответственно. А “150, 20″ размер - width и height.
Команда “_root.astext.text”, как вы наверное уже догадались, выдает нашему текстовому полю по имени “astext” какую-нибудь надпись, в данном примере “Наша первая надпись”. Вот теперь вам должно быть все понятно.
Но на этом все не ограничивается, можно также задать текстовому полю цвет фона, цвет бордюр, цвет шрифта, вид шрифта и еще много всего разного. Давайте разберемся в некоторых из них. Для начала напишите такой код:
_root.createTextField(”astext”, 2, 20, 20, 150, 20);
_root.astext.background = true;
_root.astext.backgroundColor = 0xf0f0f0;
_root.astext.border = true;
_root.astext.borderColor = 0×000000;
_root.astext.textColor = 0xcc0000;
_root.astext.text = “Flash forever”;
Ну, с первой и последней строчками вам уже все ясно, а вот остальные подлежат обсуждению. И так, продолжаем. Строка “_root.astext.background = true;” говорит о том, что мы разрешаем (значение true) использовать фон, а строка “_root.astext.backgroundColor = 0xf0f0f0;” задает цвет того самого фона.
“_root.astext.border = true;” и “_root.astext.borderColor = 0×000000;” - тоже самое только бортики (border).
А вот этой “_root.astext.textColor = 0×0000сс;” строкой мы задаем цвет шрифта.
С текстовыми полями мы в роде разобрались, хотя остается еще очень много функций и параметров, которые можно применить к тестовым полям. Но мы их здесь разберать не будем, так как данная статья посвященна возможностям Flash, а не подробному его изучению. Попробуйте по-эксперементировать сами, я уверен вы найдете еще массу параметров, которые можно будет задать.
А теперь давайте сделаем к нашему клипу кнопку. Итак, опять же открываем панель ActionScript и пишем такой большой (на первый взгляд) скрипт:
_root.createTextField(”astext”, 2, 20, 20, 150, 20);
_root.astext.background = true;
_root.astext.backgroundColor = 0xf0f0f0;
_root.astext.border = true;
_root.astext.borderColor = 0×000000;
_root.astext.textColor = 0xcc0000;
Textb = new TextFormat();
Textb.color = 0×000000;
Textb.bold = false;
Textb.align = “center”;
Textb.font = “Tahoma”;
function createButton(x0, y0, awidth, aheight, more, k, caption) {
_root.createEmptyMovieClip(more, k);
eval(more).moveTo(x0, y0);
eval(more).lineStyle(2, 0×000000, 100);
eval(more).lineTo(x0+awidth, y0);
eval(more).lineTo(x0+awidth, y0+aheight);
eval(more).lineTo(x0, y0+aheight);
eval(more).lineTo(x0, y0);
eval(more).createTextField(”caption”, 2, x0+1, y0+1, x0+awidth-2, y0+aheight-2);
eval(more).caption.setNewTextFormat(Textb);
eval(more).caption.text = caption;
eval(more).caption.selectable = false;
eval(more).caption.background = true;
eval(more).caption.backgroundColor = 0xf2f2ff;
eval(more).caption.multiline = true;
eval(bname).onRollOver = function() {
eval(more).moveTo(x0, y0);
eval(more).lineStyle(1, 0×0000ff, 100);
eval(more).lineTo(x0+awidth, y0);
eval(more).lineTo(x0+awidth, y0+aheight);
eval(more).lineTo(x0, y0+aheight);
eval(more).lineTo(x0, y0);
};
eval(more).onRollOut = function() {
eval(more).moveTo(x0, y0);
eval(more).lineStyle(1, 0×000000, 100);
eval(more).lineTo(x0+awidth, y0);
eval(more).lineTo(x0+awidth, y0+aheight);
eval(more).lineTo(x0, y0+aheight);
eval(more).lineTo(x0, y0);
};
eval(more).onReleaseOutside = function() {
eval(more).moveTo(x0, y0);
eval(more).lineStyle(2, 0×000000, 100);
eval(more).lineTo(x0+awidth, y0);
eval(more).lineTo(x0+awidth, y0+aheight);
eval(more).lineTo(x0, y0+aheight);
eval(more).lineTo(x0, y0);
};
}
createButton(0, 0, 150, 20, “submit”, 1, “Кнопка”);
_root.submit._x = 20;
_root.submit._y = 45;
_root.submit.onRelease = function() {
_root.astext.text = “Возможно все”;
};
А вот теперь, обо всем по порядку. В самом начале мы создали текстовое поле, но без текста. Зачем? Все увидите чуть позже, а пока читаем дальше.
Командой new TextFormat() мы задаем формат текста, т.е. его внешний вид, который после строки eval(more).caption.setNewTextFormat(Textb) должен находится на кнопочке.
Как вы уже заметили, тут присутствуют события onRollOver, onRollOut, onReleaseOutside. Все они - необходимый атрибут для кнопок, другими словами это реагирование на мышь. На каждом событие также можно удалять какие-то параметры или добавлять свои, но можно и просто их менять. На наших событиях я задал изменение линий вокруг кнопки (lineStyle, lineTo) - это из области программного рисование во Flash.
Нам осталось только создать саму кнопочку и дать ей какую-нибудь функцию на выполнение. Значит так, строка createButton(0, 0, 150, 20, “submit”, 1, “Кнопка”) создает кнопку, все параметры вы уже должны знать из области текстовых полей (см. выше), все они примерно одинаковые. Следующими двумя строчками (_x и _y) мы задаем место расположение кнопки. Командой functuon() мы “приказываем” кнопке выполнять следующую команду _root.astext.text = “Возможно все”. И что здесь такого? А вот что - эта строка задает метке “astext” параметр “text”, которая в свою очередь должна вывести текст “Возможно все”. А данная метка, если вы еще не догадались, находится у нас в самом начале. Правильно, это у нас текстовое поле! Значит, при нажатии на кнопку, в текстовом поле с instanceName astext появится наш текст.
В принципе, здесь все предельно просто, нужно только по-внимательней присмотреться ко всем функциям, по-возможноси добавлять свои. И помните, Flash на этом далеко не ограничен, если с чуток повазится в ActionScript’ах можно найти много нового и удивительного. Дерзайте!
