Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемка MouseEvent.MOUSE_WHEEL (http://www.flasher.ru/forum/showthread.php?t=162731)

mks81 03.08.2011 19:09

Проблемка MouseEvent.MOUSE_WHEEL
 
Почему delta не реагирует на прокрутку колесика мыши, а начинает реагировать только после того как хоть раз кликнешь в контейнере?
Фрагмент кода:
Код AS3:

bodySchedule.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
private function mouseWheelHandler(e:MouseEvent):void
{
        mouseWheel(e);
}


КорДум 03.08.2011 19:31

Объект должен быть в фокусе.

mks81 03.08.2011 21:09

А как программно навести фокус на спрайт?

preyko 03.08.2011 21:13

stage.focus = "имя спрайта";
Может и поможет.

КорДум 03.08.2011 21:30

Код AS3:

stage.focus = ссылкаНаОбъект;


mks81 03.08.2011 21:40

Да, фокус таким образом наводится(контейнер обводится желтой рамкой), но проблема не решается, пока не кликнешь, колесико не реагирует

КорДум 03.08.2011 21:41

Вы подписываете сам объект на колесико. А нужно на stage. Тогда фокус нужен на стейдже [?].

mks81 04.08.2011 11:39

Я не понял, ничего не получается... Сейчас распишу поподробней, может все таки мой косяк
1. Основной класс Main, в нем помещен контейнер: bodySchedule (спрайт)
Код AS3:

this.addChild(bodySchedule);

в этом контейнере расположен еще один контейнер container (спрайт):
Код AS3:

bodySchedule.addChild(container);

в котором располагаются объекты ScalingFlight:
2. Класс ScalingFlight
Код AS3:

public class ScalingFlight extends SimpleButton

эти объекты являются просто анимированными кнопками

3. Класс UIScrollBar для прокрутки не вместившихся в контейнер кнопок, пришлось написать самому, т.к. fl.controls.ScrollBar слишком много весит
В основном классе Main располагаются экземпляры класса UIScrollBar (спрайты из которых состоит скроллбар):
Код AS3:

q = new UIScrollBar();

они размещены в контейнере bodySchedule
далее установлен прослушиватель колесика мыши:
Код AS3:

bodySchedule.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);

он передает данные считанные с колесика мыши в класс UIScrollBar для обработки:
Код AS3:

private function mouseWheelHandler(e:MouseEvent):void
{
        q.mouseWheel(e);
}

ну вот собственно и все. Пока не кликнешь в любой точке stage колесико мыши не реагирует, как избавиться от этой проблемы?
Код AS3:

stage.focus = bodySchedule;

не помогает, спрайт обводится желтой рамкой, а проблема остается, да и сама желтая рамка при запуске клипа не устраивает, что делать?

arkadattx 04.08.2011 11:56

Как-то так
Код AS3:

addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);


mks81 04.08.2011 12:12

Цитата:

Сообщение от arkadattx (Сообщение 1017816)
Как-то так
Код AS3:

addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);


и че? так тоже самое


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

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