#flash #actionscript-3 #dispatchevent
#flash #actionscript-3 #dispatchevent
Вопрос:
У меня есть два фрейма с кодом as3:
// frame1:
gotoAndPlay("show controls");
// frame2 - have movieclip with name slide0
// create menu items click listeners
for (var i:int = 0; i < slides.items.length; i ) // slides.items.length = 1
this["menu_item" i].addEventListener(MouseEvent.CLICK, menu_item_click);
// click on the first menu item
this["menu_item0"].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
// menu item click handler
function menu_item_click(e:MouseEvent):void {
this["slide0"].gotoAndPlay("show");
}
// in movieclip slide0 on frame with label "show"
trace("slide0 show begin");
И я получаю 2 сообщения «slide0 show begin». Но когда я нажимаю на menu_item0, у меня появляется одно сообщение.
Пожалуйста, помогите — где ошибка?
Комментарии:
1. Когда останавливается видеоролик slide0? Вы создаете это .gotoAndPlay(‘показать’), поэтому оно может перейти к концу, а затем снова к фрейму с меткой ‘показать’. Кроме того, когда останавливается основная временная шкала?
2. у slide0 есть другой ключевой кадр с «stop()». Таким образом, он не может воспроизводиться дважды… Я думаю 🙂 Но когда пользователь нажимает на menu_item0, у меня появляется одно сообщение…
Ответ №1:
MovieClip(this)["menu_item" i].addEventListener(MouseEvent.CLICK, menu_item_click);
MovieClip(this)["menu_item" i].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
Вы также можете попробовать это ( slides.items.length
) с любыми номерами, которые вы можете использовать.
Ответ №2:
Хм, я переношу dispatchEvent в frame3, и он работает нормально.
// frame3
this["menu_item0"].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
Но причина такого поведения не ясна…
Комментарии:
1. Да, если вы присоединяетесь к форуму flex framework, такому как Parsley или Mate, то эта проблема является наиболее острой. Похоже, что это происходит без причины. 🙂