Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Flash - кнопка (http://www.flasher.ru/forum/showthread.php?t=135012)

Chay 14.01.2010 05:40

Flash - кнопка
 
Здравствуйте. Новичок и нуждаюсь в совете. Сделал кнопку, все работает, но одна проблема:
Если у меня UP это pic1, OVER также pic1, а DOWN pic2 как сделать так чтобы после нажатия, кнопка оставалась вдавленной, то есть видеть изображение «pic2» ? У меня после нажатия возвращает изображение «pic1». Вдавливается и выдавливается.
Для информации: составные изображения «pic1-выпуклая» и «pic2-вдавленная» нарисованы отдельно и импортированы во flash как gif-файлы

McW 14.01.2010 12:42

опа..
интересно зачем Гифы пихать во флэш, тем болие кнопками)

всё просто.
создаёте Баттон
рисуете все пазиции 1- вид кнопки, 2- кнопка при наведении мыши 3- кнопка нажатая.
копируете нарисованную нажатую кнопку в 3 леере.
делаете отдельный для неё мувиклип.
и пихаете в кадр вместо кнопки на которую нажимали неактивным объектом

и при нажатии на кнопку. идёт переход на кадр где кнопка уже не кнопка а просто нарисованный объект (вдавленный)

тоже самое можно и с гифами, но не целесообразно

Chay 14.01.2010 16:14

Type button. Скопировал нажатую кнопку DOWN. Создал новый теперь уже movie clip. Положил скопированное изображение. Ctrl-enter но ничего не вышло. Может не совсем понял, поясните, пожалуйста: «и пихаете в кадр вместо кнопки на которую нажимали неактивным объектом». Наверно, что-то делаю не совсем правильно, у меня в новом клипе нет кадров up/over/down/hit, чтобы иметь отдельный кадр, так как это теперь не кнопка, а мувиклип. В общем по разному пробую, пока не получается. В случае если делаю отдельный layer в режиме редактирования кнопки, получается нажатое изображение и только звук при нажатии, анимация пропала (да, кстати, у меня кнопка со audio, может в этом причина…) если же создаю слой в основном окне, кадры закручиваются, мигают. Но эти оба варианта изначально неверны : ( как быть?

Отдельный вопрос: какие файлы для кнопок лучше импортировать во flash, если рисую не в самом флеше ?

Заранее благодарю

McW 14.01.2010 17:52

я понял.. сделайте следующим образом
создайте 2 мувиклипа.
1) с дорожкой аудио
а) в мувике вставлена дорошка аудио с 2 кадра
б) первый кадр оставте пустым и поставте на нём 'stop'
в) назовите 2 кадр audioplay
г) вытащите из библиотеке мувик с аудио внутри и назовите его audio2) с анимацией кнопки.
лучше рисовать кнопку во флэше для простоты.
но рассмотрим ваш вариант.
а) Мувик с анимацией кнопки: 1 кадр -рисунок обычная кнопка
2 кадр -рисунок мышка на кнопке
3 кадр -рисунок вдавленной кнопки
б) На каждом кадре позиции кнопки поставте в акшине "stop"
в) присвойте каждому кадру кнопки имена b1, b2, b3
г) в кнопке присваиваем следующий код.

Код:

on (release) {
_root.audio.gotoAndPlay("audioplay");
}
on (rollOver) {
        gotoAndPlay("b2");
}
on (rollOut) {
        gotoAndPlay("b1");
}
on (release) {
        gotoAndPlay("b3");
}

объясняю код:
1 - если нажать кнопку. он стартует звук в мувике Аудио с кадра который вы назвали АудиоПлэй.
2 - если вы навели мышь на кнопку. он показывает кадр b2
3 - если вы свели мышь с кнопки он показывает кадр b1
4 - если вы нажали он показывает кадр b3

Chay 14.01.2010 21:13

Все кажется понятно, но у меня обстановка такая, видимо я не совсем точно объяснил суть. Мне нужно чтобы было так:

1. Up. Не нажатая кнопка (b1) - картинка выдавленная
2. Over. Мышка над кнопкой (b1) - ничего не меняется, тот же кадр (up и over - одна картинка, один фрейм)
3. Down. Нажатие (b2) - картинка вдавленная (кейфрейм, включается аудио, переход на другую страницу)
4. Отпускаем (b2) - картинка вдавленная (!! момент истины, главный момент !!)

Сделано так, всего два кадра (b1) и (b2). Одна картинка b1 находится в одном фрейме на два кадра up-b1 и over-b1 потом идет нажатие - кейфрейм down-b2 и вот здесь нужно, чтобы, когда я нажимаю и затем отпускаю кнопку, на кнопке останавливалось изображение b2 после чего загружается залинкованая HTML страница, где уже на месте флеш кнопки находится картинка вдавленной кнопки (ну последнее сейчас совершенно неважно, к этому можно еще добавит что изначально кнопку собрал в ActionScript2.0 так как 3.0 возникла проблема с getURL). В общем нужно, чтобы после того как нажал и отпустил, оставался тот же кадр что и при нажатии, кадр b2. Этот момент выдавливания виден во время перехода и получается так: вдавилась-выдавилась-вдавилась - не годится. По сути, проблема в том, что моя анимация loop, а нельзя как-то остановить на последний кадр, после того как нажал и отпустил? Много пробовал, но все варианты безрезультатно, то глохнет, то виснет, то loop-ит при наведении мауса, словом ничего хорошего :( подскажите, где, что и как правильно писать, чтобы все заработало. Внизу все что пытался сделать с остановкой. b2 это фрейм с картинкой, который нужно остановить или показать в конце клипа после нажатия. Назвал в окне редактирования frame label и instance name (тут пожалуй путаюсь, но в любом случае пробовал по-всякому).

Код AS1/AS2:

on(press)
{
stop("b2");
}
 
on(release)
{
stop("b2");
}
 
on (press) {
        gotoAndStop("b2");
}
 
on (release) {
        gotoAndStop("b2");
}

Со скриптом мудрил отчасти исходя из вашего кода, отчасти из этого урока, хотя здесь речь не о кнопке:

Создайте анимацию движения и просмотрите ролик. Буквы действительно постепенно проявляются, однако, проявившись, тут же опять исчезают, поскольку после последнего кадра снова воспроизводится первый. А нам нужно, чтобы, доиграв до последнего кадра, ролик остановился. Откройте папку Actions (Действия) в левой части окна, найдите в ней оператор stop и дважды щелкните на нем. В правой части окна появится код: stop ();

KiL33 15.01.2010 11:25

Код AS1/AS2:

import mx.transitions.Tween;
 
var pressed:MovieClip = null;
var btn_mc:MovieClip;
var txt_mc:TextField;
var id_btn:Number;
 
for (var i:Number = 0; i<5; i++) {
        btn_mc = createEmptyMovieClip("btn"+i, i);
        txt_mc = btn_mc.createTextField("txt", i, 0, 0, 0, 0);
        btn_mc._alpha = 50
        txt_mc.autoSize = true;
        txt_mc.text = "Button"+i;
        btn_mc._x = 100;
        btn_mc._y = 30*i;
        with (btn_mc) {
                beginFill(0x544E8F);
                moveTo(0,0);
                lineTo(50,0);
                lineTo(50,20);
                lineTo(0,20);
                lineTo(0,10);
                endFill();
        }
        btn_mc.onRollOver = function() {
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 50, 100, 0.5, true);
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 50, 100, 0.5, true);
        };
        btn_mc.onRollOut = function() {
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 100, 50, 0.5, true);
                new Tween(this, "_alpha", mx.transitions.easing.Regular.easeOut, 100, 50, 0.5, true);
        };
        btn_mc.onPress = function() {
                _root.pressed.enabled = true;
                _root.pressed.onRollOut();
                this.enabled = false;
                _root.pressed = this;
        };
}


Chay 15.01.2010 21:14

Нужно чтобы анимация кнопки остановилась на нужном кадре после нажатия. У меня кнопка из 2-ух gif-ов. Поясните пожалуйста, что здесь к чему, и что с этим кодом делать, как это может мне пригодиться, как применить, что добавить, что убрать? а то я совсем запутался. В языке, да и во флеше я пока мало, что знаю. Пробовал с этим кодом тоже (вернее на основе поковырялся) но что-то не вяжется, впрочем, мне здесь ошибиться легко. Конечно и на этом спасибо, но пока проблема актуальна, очень нужно, пока не сдаюсь :) :(

Chay 21.01.2010 20:04

Всем спасибо за помощь! Спасибо bogoos Тема исчерпана. Проблема решина так, может кому-нибудь понадобится:

1. Создаем movie clip
4. в первый кадр этого символа pic1
5. создаем еще один слой
6. в первом кадре этого слоя скрипт: stop();
7. во второй кадр слоя с картинкой вставляем звук
8. во второй кадр со скриптом пишем stop();
9. в третий кадр с картинками вставляем вторую картинку
10. в третий кадр с скриптом пишем stop();
11. выходим в сцену
13. символ перетаскиваем в 1 кадр сцены
14. даем этому символу инстанс нейм
15. в сцене делаем второй слой
16. в первом слое только созданного кадра пишем код

Код AS1/AS2:

имясимвола.onPress = function()
{
имясимвола.gotoAndStop(2)
}
имясимвола.onRelease = function ()
{
имясимвола.gotoAndStop(3)
}



Часовой пояс GMT +4, время: 18:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.