PDA

Просмотр полной версии : Создание эффектной кнопки с помощью "Movie Clip"&


Killer_13
27.03.2007, 18:08
Хочу сделать хорошо анимированую кнопку - насколько я знаю много можно сделать с помощью "Movie Clip".
Я сделал пока такую кнопку с помощью "Button".
Up: http://img259.**************/img259/8399/wedbz4.png
Over: http://img402.**************/img402/9162/wed1ej1.png


Я хочу её переделать так, чтоб был эффект плавного перехода в несколько секунд(приблизительно 1-3 сек, чтоб хорошо выглядело как для кнопки..)
от состояния "Up" в состояние "Over" - я думаю проффесионалы меня поймут.
1. - Как мне сделать вот такой переход с помощью "Movie Clip"?
2. - Как вообще делаются кнопки с побощью "Movie Clip"? И как их програмировать? Киньте ссылки или какой нибудь материал.
И ещё один вопрос не в тему.
3. - Припустим я хочу, чтоб при нажатии кнопки мне открывалась какая то форма и на ней припустим отображалась галерея фоток из заданого каталога. С помощью чего делать такую форму? КАК?

CorC
27.03.2007, 18:58
методы MovieClip которые тут нужны:
onPress onRelease onRollOver onRollOut
по ним пожно либо почитать в хелпе F1
либо поискать по форуму

Killer_13
27.03.2007, 19:46
А можно ответы на мои вопросы, потому что я не очень спец в флэше, ...
1?
2?
3?

??? - кто-то что-то посоветует? :(

screamge
27.03.2007, 23:15
1. запихиваете анимацию в мувик, в нём создаёте кнопку и пишите

this.gotoAndPlay ("frame")

2. смотреть пункт 1
3. с помощью флеша и action script

Killer_13
27.03.2007, 23:24
Это ты написал просто ...
А я порсил обьяснить что к чему, а не в двух словах..
P.S. Я и сам знаю, что э помощью флэша и екшн скрипта - ведь на нъм и делается сайт!
Например для этого следует создать отдельную сцену, запрограммировать какую то фрму или ещё что то...? КАК?

iNils
27.03.2007, 23:31
P.S. Я и сам знаю, что э помощью флэша и екшн скрипта - ведь на нъм и делается сайт!
Вернемся в недавнее прошлое:
...С помощью чего делать такую форму? КАК?
3. с помощью флеша и action script

Killer_13
28.03.2007, 00:17
дя... ну неужели никто не понимает заданого вопроса? :(

Kemnits
28.03.2007, 01:46
твой вопрос понятен, просто люди сами уже всё выучили, теперь пальцы гнут. В детском саду мы таких называли "воображалы". Я к сожелению точно подсказать не могу...

Человек спрашивает КАК сделать если кто не догнал. Он просит детально объяснить.

screamge
28.03.2007, 01:54
to Kemnits: во-первых, никто не обязан помогать...читать правила форума(если там такого не написанно - это и так понятно).
во-вторых, человеку на вопрос как товарищ CorC уже дал ответ что читать, что бы реализовать интересующую человека вещь.
в-третьих, если не можешь или не хочешь помочь...зачем критиковать других в нежелании или не умении это сделать.

ну и под конец...я не знаю как называли вы кого в детском садике, знаю другое...как называют таких как вы...правокаторами!

etc
28.03.2007, 01:55
Человек спрашивает КАК сделать если кто не догнал. Он просит детально объяснить.
Детально, это что-то вроде полного мануала для совсем маленьких? По факту это равно выполнению работы за вопрошающего. Если у вас есть время и желание — вперед.

Killer_13
28.03.2007, 01:57
Спасибо за понимание.
Действительно... :) хотя б кинули ссылки где можно подробно про это почитать... - я роюсь роюсь... и не могу ничего найти!

screamge
28.03.2007, 01:59
F1 во Flash,
http://flasher.ru/forum/showthread.php?t=80392
www.google.com

Killer_13
28.03.2007, 02:21
http://flasher.ru/forum/showthread.php?t=80392 - за эту ссылку спасибо, а то у меня я так понял вредная привычка сначала спрашивать, а потом пробовать искать по форуме...
Но всё равно очень хорошо, когда дадут тебе ответ на твой вопрос...

screamge
28.03.2007, 02:22
а чем хелп не нравится?
документация на русском: http://flasher.ru/forum/showthread.php?t=72459

Killer_13
28.03.2007, 02:33
та я и с английским не в ладах, и с програмированием тоже...
Мне очень помогает то, когда мне советуют то что я спрашиваю.. :)
Но вижу что никак иначе.. :( - придётся самому седеть.
Но на это у меня пойдёт в 10 раз больше времени!!!
А у меня "Время - это деньги", да и впрочем - как и у каждого...

etc
28.03.2007, 02:38
А у меня "Время - это деньги", да и впрочем - как и у каждого...
А разъяснять вам что-либо по мелочам разве не есть потраченное время, т.е. деньги?

Killer_13
28.03.2007, 02:47
:) - я всё прекрасно понимаю, - но можно и обойтись несколькими строчками по каждому вопросу, я хоть что-то пойму...
А по вашему это разумный ответ (тот который мне дали вначале...) - это ФЛУД!
Я не прошу по мелочам... Но вы же профи - вы должны встречатся с тем, - что я спрашиваю!
Можно кинуть линки или л-ру где это можно почитать - и я уже сижу себе и роюсь, и читаю!
А все на гугл шлёте! - Это самый обичный ФЛУД!!!

iNils
28.03.2007, 02:48
Kemnits, вас забыли спросить.

Killer_13
28.03.2007, 03:08
:( - вам смешно! :( - а мне дипломную надо писать... :(

screamge
28.03.2007, 03:11
аонимаете у нас друзьямитрадиция, 31 декабря ходить в баню...так вот на форуме тоже есть традицая посылать всех кто спрашивает про то что есть в нете на...gxoogle

Killer_13
28.03.2007, 11:05
аонимаете у нас друзьямитрадиция, 31 декабря ходить в баню...так вот на форуме тоже есть традицая посылать всех кто спрашивает про то что есть в нете на...gxoogle

Очень спасибо за понимание!
Вы очень любезный человек!:confused:

CorC
28.03.2007, 11:55
а диплом у вас заключается в написании кнопки? :)
купите книжку, и там все все написано
как я уже говорил пишете слово в окне actions
например "mc.onPress" выделяете "Pre" и жмете F1
вам будет выдана исчерпывающая информация
если с английсим не лады то http://flash-mx.ru/help/

iNils
28.03.2007, 12:11
http://flasher.ru/forum/search.php?do=process&q=анимированная кнопка

etc
28.03.2007, 13:39
:( - вам смешно! :( - а мне дипломную надо писать... :(
Ну так её же вам писать, а не нам. Ваша дипломная работа в том и заключается, чтобы найти сырой материал, разобраться в нем и описать все.

Killer_13
28.03.2007, 17:40
О, а подскажите пожалуйста можно ли как нибудь конвертировать символи в библиотеке? Например с png в екземпляр типу Graphic?
Или нужно перетаскивать на рабочее поле, а потом конвертировать?

etc
28.03.2007, 17:41
Создать новый Graphic, перетащить в него png.

Killer_13
28.03.2007, 17:52
спасибо

iNils
28.03.2007, 17:57
С помощью JSFL, выбрать нужные картинки в библиотеки (их надо положить в какую нибудь папку) и запустить команду:
var selItems = fl.getDocumentDOM().library.getSelectedItems();
for (var i=0; i<selItems.length; i++){
var str=selItems[i].name.split("/");
var name = str[str.length-1]
fl.getDocumentDOM().library.addNewItem( "graphic", name)
fl.getDocumentDOM().library.editItem(name);
fl.getDocumentDOM().library.addItemToDocument({x:217.5, y:162}, selItems[i].name);
fl.getDocumentDOM().selectAll();
sel = fl.getDocumentDOM().selection[0];
fl.getDocumentDOM().moveSelectionBy({x:-sel.left, y:-sel.top});
var id = fl.getDocumentDOM().library.findItemIndex( name);
fl.getDocumentDOM().library.items[id].linkageExportForAS = true;
fl.getDocumentDOM().library.items[id].linkageIdentifier = name;
}

Killer_13
28.03.2007, 18:14
Так всё ж таки - что мне нужно сделалать, чтоб єтих два рисунка плавно переходили из одного в другой?
Делал команду Брейк апарт, а потом с помощью анимации шейпа(формы) делал анимацию в мовіе клипе..
Но так не получается...

Killer_13
28.03.2007, 18:18
С помощью JSFL, выбрать нужные картинки в библиотеки (их надо положить в какую нибудь папку) и запустить команду:
var selItems = fl.getDocumentDOM().library.getSelectedItems();
for (var i=0; i<selItems.length; i++){
var str=selItems[i].name.split("/");
var name = str[str.length-1]
fl.getDocumentDOM().library.addNewItem( "graphic", name)
fl.getDocumentDOM().library.editItem(name);
fl.getDocumentDOM().library.addItemToDocument({x:217.5, y:162}, selItems[i].name);
fl.getDocumentDOM().selectAll();
sel = fl.getDocumentDOM().selection[0];
fl.getDocumentDOM().moveSelectionBy({x:-sel.left, y:-sel.top});
var id = fl.getDocumentDOM().library.findItemIndex( name);
fl.getDocumentDOM().library.items[id].linkageExportForAS = true;
fl.getDocumentDOM().library.items[id].linkageIdentifier = name;
}

Вот за это тебе респект, - как доберусь до этого пункта разработки... - буду эксперементировать.. :)

iNils
28.03.2007, 18:19
Слой 1 - первая картинка
альфа 0 ------ > альфа 100
Слой 2 - вторая картинка
альфа 100 ------ > альфа 1

iNils
28.03.2007, 18:46
Вот за это тебе респект, - как доберусь до этого пункта разработки... - буду эксперементировать.. :)Все просто, создаются объекты типа graphic (ну или что там нужно, лишь параметр поменять) с именем картинки.

Слегка изменил, теперь если были выбранны папки, то они исключаются из списка создаваемых объектов. И имена объектов теперь создаются не по имени картинки, а по шаблону bitmapX, где X - порядковый номер.
var selItems = fl.getDocumentDOM().library.getSelectedItems();
var cx = 0;
for (var i=0; i<selItems.length; i++){
if (selItems[i].itemType != "folder") {
// var str = selItems[i].name.split ("/");
// var name = str[str.length - 1];
var name = "bitmap" + cx;
fl.getDocumentDOM().library.addNewItem( "graphic", name)
fl.getDocumentDOM().library.editItem(name);
fl.getDocumentDOM().library.addItemToDocument({x:217.5, y:162}, selItems[i].name);
fl.getDocumentDOM().selectAll();
sel = fl.getDocumentDOM().selection[0];
fl.getDocumentDOM().moveSelectionBy({x:-sel.left, y:-sel.top});
cx++;
}
}

Killer_13
28.03.2007, 18:53
Слой 1 - первая картинка
альфа 0 ------ > альфа 100
Слой 2 - вторая картинка
альфа 100 ------ > альфа 1

:yahoo: - я только что сам догнал - как єто делать, - а потм гляжу на форум, а тут ты подал такую же идею...
Спасибо.
А как мне запрограммировать так, чтоб например на протяжении 2-3 секунд слой с цветным изображением переходил от альфа 0 до альфа 100?
Я конешно сейчас сам пороюсь в литературе, - но если есть под рукой этот код, то был бы премного благодарен.. :)

iNils
28.03.2007, 18:57
А как мне запрограммировать так, чтоб например на протяжении 2-3 секунд слой с цветным изображением переходил от альфа 0 до альфа 100?Читать про класс Tween.

Killer_13
28.03.2007, 19:10
Пробовал сделать это всё с помощью анимации формы, но альфа применяется к "МС", а при анимации формы нужно разбить обьекты (брейк апарт)..
Ок, спасибо, - Сейчас буду читать про клас Tween.

:)

Killer_13
28.03.2007, 20:11
Вот какая ситуация - такую штуку придумал (мо моему должна работать, но почему то не работает.. :( )
На рабочее поле в первый кадр слоя поместил "МС" с прозрачьностью 30% и там же в его свойсвах в екшин скрипт написал что при наведенни кнопки пусть прозрачность становится 100%
"МС" - proba в середине имеет ещё один "МС" с самим обьектом над которым работаю.
Виложу рисунок. Подскажите - почему не работает данный код?

http://img368.**************/img368/4600/probanp1.jpg

Skoder
28.03.2007, 21:32
напиши так

on(rollOver)
{
this._alpha = 100;
}

Killer_13
28.03.2007, 22:12
Спасибо - сработало, а почему по данному методу (как делал я) - не получалось?
Вроде правильно было?

Skoder
28.03.2007, 22:25
Спасибо - сработало, а почему по данному методу (как делал я) - не получалось?
Вроде правильно было?

Если ты пишишь в клипе и указываешь имя тогда указывать должен полный путь к мувику. _root.твой_клип._alpha = 100

либо просто this.твой_клип._alpha = 100 что намного лучше смотриться

Killer_13
28.03.2007, 22:39
Спасибо!

Killer_13
28.03.2007, 23:29
Вот нашол на форуме нужный мне код! :)
import mx.transitions.Tween;
var tween:Tween = new Tween (proba, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 20, false);

и

Time=getTimer();
T=10000;//millisec
mc.onEnterFrame=function(){ALPHA(Time,T)};
function ALPHA(Time,T)
var Time1 = getTimer();
if (Time1-Time>=T) {
mc._alpha=0;
} else {
var a = 100*(Time1-Time)/T;
mc._alpha=a;
}
}

для изменения альфы за определённое время.
Когда я этот кот вставляю беспосредственно в какой то кадр сцены - всё работает, но как мне этот или другой код вставить в обработчик события

on(rollOver)
{

}

????
Что то мне не получается... :(

iNils
29.03.2007, 03:15
Killer_13, еще один ап темы, и я ее закрою, а вам торжественно вручу большой и красивый плюс.
Вам что ли сложно взять и самому вставить код внутрь обработчика?

Killer_13
29.03.2007, 03:17
извините (больше не буду...) :( не сложно - просто я пробовал, а он не работает!
В обработчике...
Я уверен, что что то делаю не так.. :( - но...

Но почему само по себе это работает!

import mx.transitions.Tween;
var tween:Tween = new Tween (_root.proba, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 20, false);

а когда вставляю его в обработчик
on(rollOver)
{

}
выкидывает ошибку!

iNils
29.03.2007, 03:30
Для начала советую забыть писать код на кнопках и начать писать его в кадрах на таймлайнах, иначе возникает недопонимание, то ли это у вас кнопка, то ли мувиклип. Далее, всегда можно написать внутри обработчика trace (proba) и посмотреть, существую ли в данной области видимости proba или нет.
А теги я буду за вас ставить?

Killer_13
29.03.2007, 03:43
А теги я буду за вас ставить?

Извеняюсь.
Буду ставить теги!:)

DanQuimby
29.03.2007, 10:14
Killer_13
учите мат часть мой друг
форум служит для разьяснения каких то ошибок или вопросов
а не изготовление продукта с нуля
__etc нееее я точно не хочу этого :)

лучше не так в месте где ты установил flash есть много
примеров и все доступны для НАЧАЛА... почитай не пожалееш
у меня примерно такой путь

C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\

googleavast
29.03.2007, 10:59
Смотри:
Допустип у тя есть мувик-кнопка, в ней делаешь свою анимацию:
1.Создаешь два слоя
2.В первом кадре пишеш stop();
3.Примерно до 8 кадра делаешь свой переход(анимацию) от out к over
4.На 8-ом кадре делаешь на втором слое кадр и пишешь туда stop();
5.От 8-ого до 14(примерно) делаешь переход от over к up

Так, с создание кнопки-мувика закончено!
Дальше выходишь на саму сцену(где находится твоя муви-кнопка) и на ней пишешь:

onRollOver{
this.gotoAndPlay(2);
}
onRollOut{
this.gotoAndPlay(9)
}