Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как обработать событие rollover на неоднократно перекрывающихся мувиках? (http://www.flasher.ru/forum/showthread.php?t=85355)

DeniOR 20.09.2006 19:06

Как обработать событие rollover на неоднократно перекрывающихся мувиках?
 
Эта тема обсуждалась неоднократно. Выход через hitTest, однако не во всех случаях помогает. Например, есть контейнер с драгом, в нем туча мувиков, причем мувики могут пересекаться и не один раз (каждый на своей глубине). Нужно чтоб срабатывало событие только на наведенный (непосредственно видимый в этом месте) мувик. Как это сделать?

DeniOR 20.09.2006 19:10

Попутно
 
Как вариант решения. Можно ли hitTest'ом определить с какими мувиками есть пересеченя в данной точке? (если мувики, например друг под другом)

DeniOR 20.09.2006 19:26

Дополнение
 
если обрабатывать через hitTest сробатывают события всех мувиков, которые в этой точке пересекаются. Т.е. если мувик А лежит над мувиком Б - то при наведении на А, понятное дело сработают оба события и мувика А и мувика Б, что не есть гуд. В данном случае нужно только событие мувика А. Вопрос как победить?

Zone71 20.09.2006 20:45

Не знаю получится или нет, но на всякий пожарный попробуй.
Делаем приблизительно так:
Добавь глубину каждого мувика в массив:
Код:

var depthControl:Array= new Array()
var index:Number = 0
for (i in _root) {
      if(typeof(_root[i]) == "movieclip") {
            depthControl[index] =  _root[i].getDepth()
            index++
      }
}

и когда реализуешь hitTest, в конструкции if.. then... else укажи:
Код:

if (movie.hitTest(_xmouse, _ymouse, true) && movie._alpha == depthControl[порядковый номер глубины в массие]) { дальше код }
Если не получится, то попробуй заменить значение shapeFlag в hitTest на false. Разница в получении команды shape`ом мувика (true), если false, то на щелчок реагирует bounding box.

Что такое хорошо? 20.09.2006 21:11

может вот такое тебе надо
Код:

for (i=0; i<100; i++) {
        this["mc"+i].onRollOver = function() {
                mx.behaviors.DepthControl.bringToFront(this);
        };
}


over57 21.09.2006 08:47

Код:

for (i=0; i<100; i++) {
        this["mc"+i].onRollOver = function() {
                mx.behaviors.DepthControl.bringToFront(this);
        };
}

а куда вставляется то?

iNils 21.09.2006 11:12

over57, вы обратили внимание на то, что код который вы скопировали, был обрамлен в теги [code][/code]? Почему вы считаете, что сами так делать не должны?


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

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