5
фев
  Вращение колёсика мышки и перемотка 0 баллов
 

Вопрос:


Появилась такая задача. Есть муви клип, в котором фотки покадрово располагаются и надо, чтобы кадры сменялись с помощью колёсика мыши.
Ссылка на вопрос »

Ответ:


Задача, которую просят решить, немного необычная, но довольно простая. Необычная потому, что я никогда не сталкивался с подобной проблемой, и не видел, чтобы её где-нибудь описывали.

Событие onMouseWheel


Как вы, наверное, уже догадались, событие, которое отлавливает вращение колёсика мышки называется onMouseWhell. Собственно кроме этого события нам нужно знать только, как вообще происходит смена кадров во Flash. Ничего сложного =) разбираем синтаксис:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(varDelta:Number) {
        trace(“Движение колёсика “+varDelta);
};
Mouse.addListener(mouseListener);

1. var mouseListener:Object = new Object() — создаём объект, который будет «слушателем» события onMouseWheel. Не пугайтесь, если вам не известно слово «слушатель», просто нужно понять, что в Flash кроме основных событий, которые характерны для основных классов, существуют и другие, которые нельзя отловить без создания специального объекта, следящего за возникновением этих «других» событий. Грубо говоря, если событие onPress видят все объекты класса Movie Clip, то событие onMouseWheel, по-умолчанию, другие объекты не видят.
2. mouseListener.onMouseWheel = function(varDelta:Num… — это само событие onMouseWheel, которое возникает каждый раз при вращении колёсика мышки. Обратите внимание, что в скобках указана переменная varDelta. Эта переменная будет возвращать количественное значение «силы» вращения колёсика. Причём это значение всегда будет кратно 3. Если колёсико вращается вверх, то varDelta будет положительным, если вниз, то отрицательным. Другими словами varDelta может быть равна +3, +6, -6, -12, но не может быть равна 1 или 2.
3. Mouse.addListener(mouseListener) — «подписываем» созданный нами объект на событие onMouseWheel. Как я уже говорил выше, есть события, которые в Flash по умолчанию нельзя отловить. Это сделано с целью экономии ресурсов компьютера. Так вот, объект Mouse — это «генератор» событий, одним из которых является событие onMouseWheel. Функция addListener подключает к «генератору» событий «слушателя», который будет оповещён о наступлении событий.

Вот и весь пример =) Кстати о примере, когда будете смотреть исходник и флешку к уроку, то как в режиме тестирования в Flash, так и при просмотре в браузере не забудьте клацнуть мышкой на тёмном фоне флешки, а уже потом крутить своё колёсико, иначе просто ничего не будет работать.


Сама флешка »
| Исходник »

Комментарии (13)   Автор: admin
Комментарии
TiamaT
25.03.09 | 15:06
0 баллов

Подскажите, а trace(“Движение колёсика “+varDelta); - что происходит в этот момент?

admin
25.03.09 | 16:44
0 баллов

В окно Output (F2) выводится сообщение.

Jerry
17.06.09 | 22:33
0 баллов

В чем разница?

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
grabber._y += delta;
grabber.Slide();
}
Mouse.addListener(mouseListener);

и
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(varDelta:Number) {
};
Mouse.addListener(mouseListener);

Или разницы нет?

JEX
18.06.09 | 14:33
16 баллов

grabber._y += delta;
grabber.Slide();

Вот и всё отличие. То есть отличие состоит только в содержании функции. А так код одинаковый.
Второй случай на событие прокрутки колеса ни как не отзывается(то есть бесполезен)
Первый случай Листает объект graber(я так понял это мувиклип)

Ренат Атаев
17.07.09 | 16:50
0 баллов

У меня проблема: жизненно необходим этот пример, но после скачки мой флеш (FLASH MX Professional, естественно ломаный) его не воспринимает - пишет "неизвестный тип файла".
Что делать? И можно ли скачать на халяву то, что этот пример таки гарантированно откроет?

Поясняю: я начинающий флешер; вернее даже не флешер, а художник-аниматор; то, что делал раньше - почти исключительно покадровая анимация; экшнскрипт, логично, не знаю СОВСЕМ. Так что описанное тут решение проблемы без примера для меня пользу имеет весьма ограниченную. А решить проблему надо срочно. Но буде у меня откроется этот пример, я, надеюсь, смогу фреймы 1-99 тупо заменить на то, что необходимо мне и т.п.

admin
18.07.09 | 11:27
0 баллов

Качайте Flash CS3 и будет вам счастье.

JEX
22.07.09 | 14:40
0 баллов

или CS4 как у меня))

И.Р.И.Н.А
20.03.10 | 01:23
0 баллов

Ммммм.... просто чудо))) а вот я учуся в FLASH 8 Professional, стоит мне переходить на 9-й или Flash CS4... ну, пока не привыкла особо?

admin
20.03.10 | 19:38
0 баллов

Обязательно переходите на Flash CS4 и начинайте осваивать AS3, так как AS2 уже устарел и всё больше устаревает с каждым днём.

И.Р.И.Н.А
21.03.10 | 03:43
0 баллов

Спасибки))) а буду учить)) я даже себе штучку такую купила, что бы рисовать))

На этом месте был комментарий, но admin его удалил, потому что, цитирую: «дублирование комментария».

На этом месте был комментарий, но admin его удалил, потому что, цитирую: «дублирование комментария».

И.Р.И.Н.А
20.03.10 | 01:24
0 баллов

Сорри за повторения, больше не буду тыкать, пока нет тупит(((

 
 
 
 

Последние комментарии

Полезные ссылки

Реклама сайтов

Купальники известный марки Amarea
В широком ассортименте мебель для ванной в Вашу квартиру
Сайт о фильмах любых жанров и направлений
проектирование пожаротушения на производстве для обеспечения пожарной безопасности