Дважды запущено Flash dispatchEvent

#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, то эта проблема является наиболее острой. Похоже, что это происходит без причины. 🙂