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

ptirA 27.01.2009 15:10

Как вычислить предыдущую нажатую кнопку?
 
Привет всем!
Есть функция, которая обрабатывает MOUSE_OUT для тонны кнопок. У каждой кнопки есть флаг, соотвественно если нажата кнопка 1 то в переменной единица. В функции есть условие, если есть активная кнопка и нажали на сцену то gotoAndPlay("out") той кнопки которая была нажата, если нажали на другую кнопку, то (вот тут то и косяк) предыдущая кнопка должна gotoAndPlay("out"). Не могу сообразить как это сделать. Подскажите плиз кто знает.

Код AS3:

function outEvents(event:MouseEvent):void
{
        if (main_mc.x != mainX && main_mc.y != mainY)
        {
                //отжать предыдущую нажатую кнопку
        }
        else
        {
                if (event.target == menu_item_1)
                {
                        event.currentTarget.gotoAndPlay("out");
                        main_mc.north_america_mc.gotoAndPlay("out");
                }
                else if (event.target == main_mc.north_america_mc)
                {
                        event.currentTarget.gotoAndPlay("out");
                        menu_item_1.gotoAndPlay("out");
                }
                else if (event.target == menu_item_2)
                {
                        event.currentTarget.gotoAndPlay("out");
                        main_mc.europe_mc.gotoAndPlay("out");
                }
                else if (event.target == main_mc.europe_mc)
                {
                        event.currentTarget.gotoAndPlay("out");
                        menu_item_2.gotoAndPlay("out");
                }
                ...
                ...
                ...
        }
}


mre 27.01.2009 17:17

Ваш код - это жесть.
Если в каждый момент времени может быть нажата только одна кнопка, то храните ссылку на нее в переменной.
Этого вполне достаточно.

ptirA 27.01.2009 17:43

если можно маленьким примером пожалуйста ...
да мой код - это жесть)))

Добавлено через 1 час 44 минуты
Ладно... перефразирую... как заставить делать "out" у любой активной кнопки, при условии нажатия любой другой? %)

mre 27.01.2009 19:50

Цитата:

Сообщение от ptirA (Сообщение 793837)
если можно маленьким примером пожалуйста

Пример чего? Как присвоить переменной ссылку на объект?

Код AS3:

private var activeButton:MovieClip;
 
private function clickHandler(event:MouseEvent):void
{
    if (activeButton == event.target) return;
    if (activeButton != null)
    {
        activeButton.gotoAndPlay("out");
    }
    activeButton = event.target as MovieClip;
    activeButton.gotoAndPlay("in");
}


ptirA 27.01.2009 21:17

(((( нет... я ничего не понял... пытался разобраться с тем что Вы написали, но без успешно... видимо надо все пере*ерачивать( в моем случае это не применимо.

Но все равно спасибо!

darksranger 28.01.2009 21:22

Код AS3:

private var activeButton:MovieClip; - обьявляем переменную для всего класса ( чтобы могла хранить нажатую кнопку) 
 
private function clickHandler(event:MouseEvent):void
{
    if (activeButton == event.target) return; - если нажимаем на ту которая нажата выходим из метода
    if (activeButton != null) - проверяем не является ли предидущая нажатая кнопка null ( это может быть при первом входе в метод так как в activButton еще не чего нету )
    {
        activeButton.gotoAndPlay("out"); собственно если нажимается другая кнопка отжимаем ту которая была нажата до этого
    }
    activeButton = event.target as MovieClip; сохраняем ссылку на только что нажатую кнопку
    activeButton.gotoAndPlay("in"); и собственно нажимаем
}

и вопрос что тут не понятного ? код вроде простой до ужаса
может вам стоит почитать того же мука ?

Danss 30.01.2009 18:09

кстати мук в эл. виде появился на русском, скачать можно тут: http://www.bookarchive.ru/computer/g...kovodstvo.html


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

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