Форум 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)
-   -   Вложенные кнопки (http://www.flasher.ru/forum/showthread.php?t=201637)

deep70 19.06.2013 11:58

Вложенные кнопки
 
Сложно озаглавить тему, но пусть так.

Есть два клипа. mc1 и mc2. mc1 суть родитель для mc2
Код AS1/AS2:

function Over()
{
        trace(this);
}
mother = mc1;
child = mc1.mc2;
mother.onRollOver = Over;
child.onRollOver = Over;

mc2 игнорирует события мыши, пока на mc1 есть какой-либо обработчик. Как это обойти?

mooncar 19.06.2013 12:31

Используйте hitTest.

deep70 19.06.2013 14:25

Смог обработать клик и onRollOver на mother и child (клик на родительском здесь не показан ибо нет смысла)

Код AS1/AS2:

function Over()
{
        trace(this);
        this.onMouseMove = function()
        {
                if (child.hitTest(_root._xmouse, _root._ymouse))
                {
                        trace(child);
                        delete this.onMouseMove;
                }
        };
        this.onMouseUp = function()
        {
                if (child.hitTest(_root._xmouse, _root._ymouse))
                {
                        trace("Клик по child");
                }
        };
}
mother = mc1;
child = mc1.mc2;
mother.onRollOver = Over;
//
mother.onRollOut = function()
{
        trace("мышь вне mother");
};

delete this.onMouseMove; - неспроста, ибо мне надо лишь зарегистрировать попадание мыши на child. Как после всего этого отследить, что мышь ушла с child (симуляция onRollOut)?

Добавлено через 18 минут
Простите, поспешил с вопросом. Достаточно было подумать над проверкой:


Код AS1/AS2:

function Over()
{
        var mouseOnChild = false;
        trace(this);
        this.onMouseMove = function()
        {
                if (child.hitTest(_root._xmouse, _root._ymouse) && mouseOnChild == false)
                {
                        trace("Мышь на child");
                        mouseOnChild = true;
                }
                if (!child.hitTest(_root._xmouse, _root._ymouse) && mouseOnChild == true)
                {
                        trace("Мышь вне child");
                        mouseOnChild = false;
                }
        };
        this.onMouseUp = function()
        {
                if (child.hitTest(_root._xmouse, _root._ymouse))
                {
                        trace("Клик по child");
                }
        };
}
mother = mc1;
child = mc1.mc2;
mother.onRollOver = Over;
//
mother.onRollOut = function()
{
        trace("мышь вне mother");
};

mooncar, большое спасибо за исчерпывающий ответ

mooncar 19.06.2013 14:59

Вот, приводил пример. Может пригодится.


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

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