2011-09-23 101 views
5

有什麼方法可以模擬AS3中的點擊事件?我試試這個:模擬AS3中的點擊事件

element.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false)); 

但點擊事件不會觸發它。

+0

你試圖模擬點擊的元素是什麼? – stormbreaker

回答

20

如果您正在收聽MouseEvent.CLICK,則發送MouseEvent.CLICK。您現在正在調度MouseEvent.MOUSE_DOWN

element.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
+0

我很好奇,是閃存的調度處理程序,它是否觸發了MOUSE_DOWN事件? – eLouai

+0

@eLouai如果您正在偵聽MOUSE_DOWN事件,Flash將不處理'CLICK'事件,反之亦然。當你點擊鼠標時觸發'MOUSE_DOWN'事件,釋放鼠標時觸發'MOUSE_UP'。 'CLICK'事件相當於'MOUSE_DOWN'後面跟着'MOUSE_UP'。然而,分別調度'MOUSE_DOWN'和'MOUSE_UP'不會觸發'CLICK'事件 –

+0

根據Adobe的文檔,他們清楚地聲明瞭這一點......「對於發生的點擊事件,它必須始終按照該順序執行這一系列事件發生的事件:mouseDown事件,然後是mouseUp,這兩個事件的目標對象必須是相同的,否則不會發生click事件,在mouseDown或mouseUp事件之間可以隨時發生任意數量的其他鼠標事件; click事件仍然發生。「但不幸的是,我似乎無法影響它,所以無論是系統監聽ANOTHER響應的事件流,還是存在錯誤。 – eLouai

3

您必須發送MouseEvent.CLICK事件。

element.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false)); 
0

爲了模擬,你首先需要調度click事件:

element.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false)); 

接着是:

element.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false)); 

在MOUSE_UP事件的處理程序將隨後發行點擊事件(如果鼠標位於元素的上方,則可能需要在調度的事件中設置mouse_x和mouse_y變量)