PDA

Просмотр полной версии : Как кодом (as3) сказать кнопке, что она кликнута?


gonzo
26.07.2010, 00:06
Как кодом (as3) сказать кнопке что она кликнута.. Мне нужно обратиться к кнопке через диспатч и сказать ей что на неё нажали..?

Хемуль
26.07.2010, 00:11
2 gonzo:
Что значит "сказать"? И для какой версии ActionScript?

gonzo
26.07.2010, 00:29
2 gonzo:
Что значит "сказать"? И для какой версии ActionScript?
для as3

у меня есть функция которая вызывается нажатием на кнопку - "btn1" .Кнопка находится в месте .А. допустим. Проблема в том, что к нажатию кнопки надо обратиться из другого места. Мето .Х. например. Так вот что надо сделать

событие продиспатчил в месте Х: this.dispatchEvent(new Event('go_click_btn1',true));

теперь мне надо сказать кнопке "btn1" в месте .А., что она была кликнута...
addEventListener('go_click_btn1', CLIK_Btn1);

function CLIK_Btn1(e:Event=null):void
{ ???????????????????????

Хемуль
26.07.2010, 01:32
2 gonzo:
Кнопка находится в месте .А.
Нет во Flash'е такого понятия, как "место". Вы говорите о кадрах? О кадрах каких таймлайнов? Или вы говорите о коде подключаемых классов?

// Добавление слушателя
button.addEventListener(MouseEvent.CLICK, buttonClick);

// Определение обработчика с опциональным параметром
function buttonClick(event:MouseEvent = null):void { /* Что-то делаем тут */ }

// Вызов функции-обработчика без параметра
buttonClick();

gonzo
26.07.2010, 01:39
2 gonzo:

Нет во Flash'е такого понятия, как "место". Вы говорите о кадрах? О кадрах каких таймлайнов? Или вы говорите о коде подключаемых классов?

// Добавление слушателя
button.addEventListener(MouseEvent.CLICK, buttonClick);

// Определение обработчика с опциональным параметром
function buttonClick(event:MouseEvent = null):void { /* Что-то делаем тут */ }

// Вызов функции-обработчика без параметра
buttonClick();



из разных мест это из разных мувиклипов, которые стаян на сцене в разных местах..

что означает { /* Что-то делаем тут */ } ??

Хемуль
26.07.2010, 01:49
2 gonzo:
Так вопрос теперь только в том, чтобы из одного обьекта обратиться к функции, описанной на таймлайне другого. Об этом уже создано много тем на форуме.

Между фигурными скобками { и } определяется тело функции. То есть, то, что она должна делать.

Между конструкциями /* и */ можно писать многострочные комментарии.

gonzo
26.07.2010, 01:51
2 gonzo:
Так вопрос теперь только в том, чтобы из одного обьекта обратиться к функции, описанной на таймлайне другого. Об этом уже создано много тем на форуме.

Между фигурными скобками { и } определяется тело функции. То есть, то, что она должна делать.

Между конструкциями /* и */ можно писать многострочные комментарии.

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

Хемуль
26.07.2010, 02:04
2 gonzo:
Мне очень сложно вас понимать, потому что я не знаю, что такое "диспатч".

Код может "говорить, что кнопка была нажата", как по мне, в том случае, если подразумевается установка/проверка значения какой-то переменной. Вы это в виду имеете? Мне кажется, вам лучше просто написать, что есть и что нужно получить в результате - так вам скорее помогут.

gonzo
26.07.2010, 02:14
ок. есть два мувиклипа М1 и М2. В М1 есть кнопка, которая при нажатии вызывает действе D, так? В мувиклипе М2 тоже есть кнопка которая при нажатии переходит в определенный кадр- К50, мувиклипа М1. Есть ли какаой нибуть код, который можно написать в кадре К50 мувиклипа M1 чтобы попав на него выполнилось действие D?(которое выполняется при нажатии на кнопку из М1)?

KirAmp
26.07.2010, 02:34
Ужоснах..... я ушел в ребут-брейн 2 раза пока постигал смысл
................................
используйте функции, заместо действия D используйте function D(){} а внутри клипа М1 в кадре 50 пишите _root.d()

Хемуль
26.07.2010, 02:39
2 gonzo:
Ну вот, склепал такое...
Запускайте FLA и смотрите trace'ы.