|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
как сделать Слушатель на колесо мыши?
Привет!
Есть код - горизонтальный скролл. Подскажите, пожалуйста, как делать прокрутку с помощью колеса мыши! Последний раз редактировалось Stanislavsky; 29.01.2010 в 23:26. Причина: Запостил ниже. |
|
|||||
Регистрация: Oct 2009
Адрес: г. Казань
Сообщений: 82
|
Смотрите MouseEvent.MOUSE_WHEEL
__________________
AS3Coding: ActionScript 3.0, FlashDevelop, ... |
|
|||||
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Кто посмотрит? Что то не правильно у меня?
package { import flash.display.*; import flash.events.*; import flash.geom.*; //Импорт TweenMax и plugin для blur filter import com.greensock.TweenMax; public class GalleryClass extends MovieClip { var scrollMC:Hand; var myContent:Content; var myMask:Maska; var scrolling:Boolean = false; //Создадим прямоугольник, который будет действовать как ограничитель для scrollMC. //Это способ, при помощи которого scrollMC можно перетаскивать только вдоль линии. var bounds:Rectangle = new Rectangle(scrollMC.x, scrollMC.y, 700, 0); //Мы хотим знать, какая была предыдущая x-координата для контента (для анимации) var oldX:Number = myContent.x; //Запомним длину контента и маски. var CONTENT_WIDTH:Number = 4000; var MASK_WIDTH:Number = 408; public function GalleryClass() : void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } public function init(event:Event = null) : void { scrollMC = new Hand(); addChild(scrollMC); scrollMC.x = 35; scrollMC.y = 54; myMask = new Maska(); addChild(myMask); myMask.x = 20; myMask.y = 90; //Располагаем контент в левом верхнем углу маски myContent = new Content(); addChild(myContent); myContent.x = myMask.x; myContent.y = myMask.y; //Установим маску для нашего контента myContent.mask = myMask; //Мы хотим знать, когда пользователь скроллирует var scrolling:Boolean = false; //Слушаем, когда пользователь нажимает мышь на scrollMC scrollMC.addEventListener(MouseEvent.MOUSE_DOWN, startScroll); //Слушаем когда пользователь вращает колесико мыши stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler); //Слушаем, когда пользователь отпускает кнопку мыши stage.addEventListener(MouseEvent.MOUSE_UP, stopScroll); //Добавим ENTER_FRAME чтобы анимировать скроллирование addEventListener(Event.ENTER_FRAME, enterHandler); } //Эта функция вызывается, когда пользователь перетаскивает scrollMC private function startScroll (event:Event):void { //Установим scrolling равным true scrolling = true; //Начинаем перетаскивать scrollMC scrollMC.startDrag(false,bounds); } //Эта функция вызывается, когда пользователь заканчивает перетаскивание scrollMC private function stopScroll(event:Event):void { //Установим scrolling равным false scrolling = false; //Остановим перетаскивание scrollMC.stopDrag(); } //Эта функция выполняется в каждом фрейме private function enterHandler(event:Event):void { //Проверяем, происходит ли скроллирование if (scrolling == true) { //Вычисляем расстояние scrollMC от левого края var distance:Number = Math.round(scrollMC.x - bounds.x); //Вычисляем процентное содержание расстояния по отношению к длине линии. //Итак, когда scrollMC слева, percentage равно 0 , // а когда справа - percentage равно 1. var percentage:Number = distance / MASK_WIDTH; //Сохраним старую x - координату oldX = myContent.x; //Вычисляем новую x -координату (targetX) для контента. //Мы вычитаем длину маски из длины контента. //Таким образом, контент должен двигаться влево, когда мы прокручиваем вправо. //Удалите вычитание, чтобы убедиться лично! var targetX:Number = -((CONTENT_WIDTH - MASK_WIDTH) * percentage) + myMask.x; //Мы хотим анимировать скроллирование только если старый х отличается от нового х. //В нашем мувике мы анимируем прокрутку, если разница больше чем 5 пикселов. if (Math.abs(oldX - targetX) > 5) { //Твин контента на новую позицию. //Вызываем функцию tweenFinished() когда твин завершится. TweenMax.to(myContent, 2, {x: targetX, blurFilter:{blurX:0, blurY:0}, onComplete: tweenFinished}); } } } //Эта функция вызывается, когда твин завершается private function tweenFinished():void { //твин для возврата контента к нормальному состоянию (= удалим blur) TweenMax.to(myContent, 0.3, {blurFilter:{blurX:0, blurY:0}}); } function mouseWheelHandler(event:MouseEvent):void { if ((event.delta < 0 && scrollMC.x > bounds.x) || (event.delta > 0 && scrollMC.x < bounds.x + bounds.width)) { scrolling = true; scrollMC.x = scrollMC.x + (event.delta * 9); } } } } ОШИБКА 1009!!! Что неправильно? Где же Вы специалисты? Последний раз редактировалось Stanislavsky; 30.01.2010 в 02:17. |
|
|||||
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Извиняюсь.
"Невозможно получить доступ к свойству или методу пустой ссылки на объект. " Объект, результатом которого является null, не может иметь свойств. Эта ошибка может возникнуть в некоторых неожиданных (однако допустимых) ситуациях. Возьмем для примера следующий код создания объекта Sprite. Так как этот объект Sprite никогда не добавляется в список отображения (с использованием метода addChild() объекта DisplayObjectContainer), его свойство stage принимает значение null. Таким образом, выполнение данного кода приводит к ошибке, так как свойство stage объекта Sprite не может обладать какими-либо свойствами: import flash.display.Sprite; var sprite1:Sprite = new Sprite(); var q:String = sprite1.stage.quality; |
|
|||||
1. Запустите флешку в дебаг режиме, что бы узнать строку в которой происходит ошибка.
2. В конструкторе все равно не может быть stage, оставьте: Добавлено через 3 минуты 3. Зачем вам слушать ENTER_FRAME если вы используете твинер?В данном случае вместо ENTER_FRAME можно исмользовать MOUSE_MOVE. И слушатель лучше добавлять в обработчике MOUSE_DOWN и убирать в обработчике MOUSE_UP (MOUSE_UP тоже добавлять в MOUSE_DOWN и удалять в своем обработчике), зачем им висеть когда они не нужны? Последний раз редактировалось alatar; 30.01.2010 в 05:20. |
|
|||||
Регистрация: Nov 2009
Сообщений: 11
|
вопрос. а можно-ли как то узнать в какую сторону крутится скрол??
|
|
|||||
открываем хелп и видим
Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
о_О..а может если он не добавлен на сцену? )
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
Часовой пояс GMT +4, время: 00:59. |
|
« Предыдущая тема | Следующая тема » |
Теги |
scroll , колесо мыши , скроллинг |
|
|