Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MOUSE_OVER на слой ниже (http://www.flasher.ru/forum/showthread.php?t=138412)

54321go 07.04.2010 13:48

MOUSE_OVER на слой ниже
 
Поверх объекта на который использую MOUSE_OVER стоит выше клип и перекрывает нижний. Что можно сделать, чтобы работал MOUSE_OVER, не изменяя очерёдность слоёв?

dmitriev 07.04.2010 13:55

Код AS3:

верхний_клип.mouseEnabled = false;


mrMEM 08.04.2010 19:37

а что делать если на верхнем слое нужно ловить MOUSE_OVER, MOUSE_OUT и MOUSE_DOWN
а на нижнем слое MOUSE_OVER и MOUSE_OUT?

верхний слой полностью перекрывает нижний

Волгоградец 08.04.2010 19:54

Никак, используйте математику для определения координат. Или вложите нижний клип в верхний.

silin 08.04.2010 20:05

можно последить за нижним в MOUSE_MOVE
Код AS3:

private var _prevHit:Boolean = false;                
private function onMouseMove(event:MouseEvent):void
{
        var currHit:Boolean = downSprite.hitTestPoint(event.stageX, event.stageY, true);
        if (_prevHit != currHit)
        {
                currHit ? downOver() : downOut();
                _prevHit = currHit;
        }
}


Zebestov 08.04.2010 20:23

интересно, а что за задача?

mrMEM 09.04.2010 15:52

спасибо, silin, за самописный MOUSE_OVER, MOUSE_OUT
время мне сократил немножко

Добавлено через 12 минут
почему-то не всегда срабатывает (

задача такая: при наведении на область на земле должна немного выдвинуться плитка,
при нажатии на плитку она выезжает полностью, при отведении курсора плиитка заезжает обратно в землю.
на плитке есть функциональные элементы - текст, ссылки

Добавлено через 24 минуты
у меня не срабоало, потому что прицеприл обработчик локально.
изменил код под свои нужды так:
Код AS3:

                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
                private var _prevHit:Boolean = false;               
                private function onEnterFrame(event:Event){
                        var currHit:Boolean = area.hitTestPoint(stage.mouseX, stage.mouseY, false);
                        if (_prevHit != currHit)
                        {
                                currHit ? downOver() : downOut();
                                _prevHit = currHit;
                        }
                }
                private function downOver(){
                        trace("over");
                }
                private function downOut(){
                        trace("out");
                }



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

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