PDA

Просмотр полной версии : Колесо мыши, не прослушивается ((


redexer
16.04.2011, 23:57
в чистом fla AS3.0 файле, прописываю

stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheel)
function wheel(Event:Mouse):void
{
trace("mouseWheel");
}

stage.addEventListener(MouseEvent.CLICK, wheel2)
function wheel2(Event:MouseEvent):void
{
trace("mouseClick");
}

на клик реагирует, трейсит текст ... на колесо ноль внимания!
Уже прочел все хелпы, облазил все форумы.
То ли лыжи не едут ... толи я ...

Помогите пожалуйста!
Заранее благодарен.

goodguy
17.04.2011, 00:16
Внимательнее надо относить к коду.

function wheel(Event:Mouse):void // здесь ошибка. Нужно писать MouseEvent, а не Mouse

honest_man
17.04.2011, 00:31
Странняк, должно было выбивать несоответствие типов на этапе выполнения...

redexer
17.04.2011, 01:23
goodguy и так и так не пашет, если бы было все так просто ;)

MAPUTO
17.04.2011, 02:00
Зато работает вот так:


stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheel)
function wheel(e:MouseEvent):void
{
trace("mouseWheel");
}


Только перед использованием желательно чтобы окно получило фокус.

Хотя странно... И с Event тоже работает.

bav
17.04.2011, 02:00
Вот работающий код. Не рекомендуется называть параметры слушателей также как класс событий. Пишите названия параметров со строчных букв.

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

public class TestProject extends Sprite
{
public function TestProject():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(event:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheel);
}

private function wheel(event:MouseEvent):void
{
trace("La-la");
}
}
}

goodguy
17.04.2011, 09:45
goodguy и так и так не пашет, если бы было все так просто ;)

Все на самом деле и есть так просто ;)

КорДум
17.04.2011, 09:53
Хотя странно... И с Event тоже работает.
MAPUTO, все логично. MouseEvent расширяет Event.
redexer, что-то мне подсказывает, что колесо ловит FlashIDE. Проверьте флешку отдельно.

honest_man
17.04.2011, 12:24
goodguy и так и так не пашет, если бы было все так просто ;)

Что не работает? Где не работает? Вот, вполне работающий код, как написал goodguy:


stage.addEventListener(MouseEvent.MOUSE_WHEEL, wheel)
function wheel(Event:MouseEvent):void
{
trace("mouseWheel");
}

stage.addEventListener(MouseEvent.CLICK, wheel2)
function wheel2(Event:MouseEvent):void
{
trace("mouseClick");
}


То что вы параметры написали с заглавных это конечно плохо и может запутать, но компилятору какбы накласть, своя собственная область видимости у приемника, что хочет то и делает. Можете параметры даже MovieClip*ами назвать.

mikhailk
17.04.2011, 12:38
Хотя странно... И с Event тоже работает.

попробуйте снять дельту и тут же увидите разницу :)

MAPUTO
17.04.2011, 18:25
КорДум, mikhailk, странно не то что у меня работает, а то что у redexer не работает.

КорДум
17.04.2011, 19:00
попробуйте снять дельту и тут же увидите разницу :)
var _delta:int = (event as MouseEvent).delta;
;)

goodguy
17.04.2011, 19:34
Зачем создавать такую конструкцию, когда проще сразу указать MouseEvent в качестве параметра?

mikhailk
18.04.2011, 11:50
КорДум, :)

redexer
19.04.2011, 19:15
Блин, может это какой то глюк именно у меня О_о...
Беру открываю новую флешку, тупо копи паст ваших скриптов (хотя такие же писал, не работало).
Клик работает, колесо нет )))))) я в панике!

Если это поможет у меня Adobe Flash CS5, Win 7 ... да, и само по себе колесо мыши рабочее ))) в винде, браузерах и прочем софте работает.
Судя по всему проблема не в коде... может кто то сталкивался?

Zebestov
19.04.2011, 20:12
Я тут поменял мышь, и к ней идет своя настройка колесика, чтобы не нужно было кликать на объект для фокусировки — скролл автоматически применяется к объекту непосредственно под курсором. Так вот с такими настройками колесо прекращает свою работу во Flash-е даже если кликнуть по мувику.
Не оно?

КорДум
19.04.2011, 20:42
Проверьте работу колеса в стандалон плеере, а не в том, у которого на фоне висит FlashIDE, говорю же, что она перехватывает.

goodguy
19.04.2011, 21:09
Она не перехватывает колесо

КорДум
19.04.2011, 21:10
А проверим ;) Полтергейст неуловим, но мало ли.

redexer
26.04.2011, 01:16
Все, разобрался )) точнее нет, не разобрался, у меня все равно траблы со скролом, но зато на других компах все ок. Плохо скролится (медленно) не так как обычные html страницы ... но все же скролиться.

2_Zebestov дров никаких не стоит мышь MS Explorer 4.0 проводная )), и кстати заработало, вообще без всякого прописывания, но ооочень плохо, нужно дофига оборотов делать что бы он хотя бы на строчку прокуртил.

MAPUTO
26.04.2011, 01:42
redexer, а мышь и скролинг тут при чем? :-D Наверное параметры в программе поменять надо на бо'льшие значения.

goodguy
26.04.2011, 07:13
redexer, вообще-то свойство delta 3 и -3 созданы лишь для определения стороны вращения колеса, а то, на сколько контент будет прокручиваться (или не прокручиваться) при событии колеса нужно прописывать отдельно