2010-08-29 76 views
1

我有兩個幀,AS3代碼:閃光燈dispatchEvent觸發了兩次

// 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節目開始」。但是當我點擊menu_item0時,我有一條消息。

請幫忙 - 哪裏出錯?

+0

slide0影片剪輯何時停止?你做它.gotoAndPlay('show'),所以它可能會結束,然後再次到標籤'show'的框架。 另外,主時間線何時停止? – Hrundik 2010-08-29 12:26:54

+0

slide0有另一個關鍵幀「stop()」。所以它不能播放兩次...我認爲:) 但是,當用戶點擊menu_item0我有一個消息... – im4LF 2010-09-02 08:38:58

回答

0

嗯,我將dispatchEvent移動到frame3,它工作正常。

// frame3 
this["menu_item0"].dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 

但對這種行爲的原因尚不清楚...

+0

是的,如果你加入一個flex的論壇,如荷蘭芹或伴侶,那麼這個問題是最多的W *F。似乎是沒有理由的。 :) – ktutnik 2010-08-30 11:10:03

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)yeine號碼。