Форум 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=213093)

faraday 29.06.2016 20:08

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

 
private static function getHitObjects(from:DisplayObjectContainer, point:Point, array:Vector.<DisplayObject>) {
                        for (var i:int = 0; i < from.numChildren; i++) {
                                var child:DisplayObject = from.getChildAt(i);
                                if (child.hitTest(point)){
                                        array.push(child);
                                        if (child is DisplayObjectContainer)
                                                return getHitObjects(DisplayObjectContainer(child), point, array);
                                        else
                                                return array;
                                }
                        }
                }


Zebestov 29.06.2016 21:25

А разве переопределенный в Stage метод hitTest() не даст ожидаемого результата?

Dezar 29.06.2016 21:26

с старлинг не работал, но разве нельзя юзать
MouseOver ?а там определять event.target
или я не верно понял задачу?

еще вот это смутило.
Цитата:

Снизу вверх, как я понимаю, это не определить
что именно нельзя снизу вверх?)

faraday 29.06.2016 21:40

Цитата:

Сообщение от Zebestov (Сообщение 1195213)
А разве переопределенный в Stage метод hitTest() не даст ожидаемого результата?

Спасибо, совсем забыл что hitTest возвращает DisplayObject, а не Boolean)
Код AS3:

                public static function hitOver(me:DisplayObject):Boolean {
                        if (me&&me.stage&&me.hasVisibleArea){
                                var hit:DisplayObject = starlingStage.hitTest(position, true);
                                if (me is DisplayObjectContainer)
                                        return DisplayObjectContainer(me).contains(hit);
                                else
                                        return (hit == me);
                        } else
                                return false;
                }

Dezar, там не все так просто)


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

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