Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Колесо мыши, не прослушивается (( (http://www.flasher.ru/forum/showthread.php?t=154404)

redexer 16.04.2011 23:57

Колесо мыши, не прослушивается ((
 
в чистом fla AS3.0 файле, прописываю

Код AS3:

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

Внимательнее надо относить к коду.
Код AS3:

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

Зато работает вот так:

Код AS3:

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

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

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

bav 17.04.2011 02:00

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

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

Цитата:

Сообщение от redexer (Сообщение 989964)
goodguy и так и так не пашет, если бы было все так просто ;)

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

КорДум 17.04.2011 09:53

Цитата:

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

honest_man 17.04.2011 12:24

Цитата:

Сообщение от redexer (Сообщение 989964)
goodguy и так и так не пашет, если бы было все так просто ;)

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

Код AS3:

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 тоже работает.
попробуйте снять дельту и тут же увидите разницу :)


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

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