Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Кнопка (запутался в коде) (http://www.flasher.ru/forum/showthread.php?t=115239)

BBOY Ильич 24.08.2008 21:34

При наведении/убиранни курсора с кнопки лучше использовать continueTo

Maxson 25.08.2008 19:35

Спасибо. Посмотрел:

- немогу остановить анимацию. На стоп(отдельно) реагирует летально. Внутри сего кода никак не реагирует.

- не вижу что бы она лупилась, просто зум.

Мечтатель 25.08.2008 19:41

-объясните, что для Вас означает "лупится"?
- не можете остановить анимацию где? Конкретно в том коде, который я привел ранее?

Maxson 26.08.2008 01:24

-Лупится всмысле "loop" - идет по кругу.
-Ну я свою всунул анимацию, фреймы проще говоря.

Maxson 26.08.2008 01:27

А вы подумали лупится типа увеличивается? :)

Мечтатель 26.08.2008 19:05

Вложений: 1
Раз всунули фреймы, значит создаете анимацию непрограммно. Ну ладно, коли так нравится, значит даю пример с минимумом ActionScript.

1. Открываем новый документ во Flash.
2. Рисуем красный квадратик (пусть он будет кнопкой)
3. Жмем F8 и сохраняем этот квадратик, как "мувик"
4. Заходим в этом "мувик" и создаем анимацию. Что Вы будете делать - Ваше дело. Я просто взял и стал вращать квадрат каждые 20 кадров на 45 градусов. В итоге - 81 фрейм. Учитывая первый фрейм бездействия кнопки (стоповый, когда никаких событий не происходит)
5. Когда анимацию закончили. Пропишем в первом фрейме мувиклипа команду "stop". В последнем - gotoAndPlay(2). Думаю не нужно объяснять для чего?
6. Помещаем муви клип на главную сцену. Даем ему имя в (Instance Of) button.
7. В первом кадре сцены прописываем код:

Код:

_root.button.onRollOver=function(){
_root.button.gotoAndPlay(2);
}

_root.button.onRollOut=function(){
st = setInterval(frm,20); // Устанавливаем интервал с которым будем вызывать //
//нужную функцию.
}

//Функция, которая определяет номер текущего фрейма, отнимает от
//него единицу, до тех пор пока головка таймлайна не вернется в первый
//кадр.

function frm(){       
if (_root.button._currentframe!=1){
_root.button.gotoAndPlay(_root.button._currentframe - 1);
}
else{
clearInterval(st); // Убиваем интервал, когда головка вернулась в
//первыйкадр таймлайна.

}
}

_root.button.onRelease=function(){
getURL("http://flasher.ru", "GET");
}

Можете скачать мой исходник, если я здесь что-то непонятно объяснил.

Maxson 26.08.2008 22:17

Яснее быть и неможет. Но что бы ваш метод был без изъяна и новые поколения нупов вам были признательны, нам нужно как то решить проблему "срывания" анимации и последующего ее игнорирования на события ( во время анимации отведите резко курсор и опять наведите - поймете о чем я говорю )

skald 26.08.2008 22:37

жесткач ... че проще нарисовать кнопку ?? и анимации к ней .... и вставить их в соответствующие поля. и наглядней и качественней результат ))))))))))))))

Maxson 28.08.2008 20:24

skald, почисти клаву под кнопкой ноль, мне кажется она заедает.

pyatifan 14.02.2009 21:44

ненадежно
 
Пример пригодился, было очень радостно, только он ненадежный оказался на больших скоростях.

Понадобилось сделать вращение шестеренок (это в логотипе). При наведении мышки на клип, проигрываются кадры зацикленно. Но! При отведении курсора нужно чтобы анимация проигралась один раз до конца без зацикливания.

Если время вызова функции setInterval поставить больше 20, то возникают ошибки. Вот код:
Код:

_root.button.onRollOver=function(){
_root.button.gotoAndPlay(2);
}

_root.button.onRollOut=function(){
st = setInterval(frm,20); // Устанавливаем интервал с которым будем вызывать //
//нужную функцию.
}

//Функция, которая определяет номер текущего фрейма, отнимает от
//него единицу, до тех пор пока головка таймлайна не вернется в первый
//кадр.
function frm(){       
if (_root.button._currentframe!=80){
_root.button.gotoAndPlay(_root.button._currentframe + 1);
}
else{
clearInterval(st); // Убиваем интервал, когда головка вернулась в
//первыйкадр таймлайна.
_root.button.gotoAndStop(1);
}
}

_root.button.onRelease=function(){
getURL("http://flasher.ru", "GET");
}

Может другой способ есть? Делитесь опытом, жду советов:)


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

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