2012-07-07 53 views
0

我想在Flash中建立一個自定義模式對話框。我選擇的方式是創建一個帶有用於對話框的用戶界面的影片剪輯類,並在其中添加按鈕。然後在添加所有按鈕並在屏幕上顯示之後,調整ui的大小。Actionscript 3 - 同步點擊事件

它的工作原理了這一點。現在我想讓這個對話框等待,直到在用戶可以做任何事情之前選擇一個按鈕。沿着線的東西:

var dialog:MyDialog = new MyDialog(); 
dialog.addButton(new MyButton("Foo")); 
dialog.addButton(new MyButton("Bar")); 
var result:String = dialog.show(); // we will wait here 

在dialog.show我希望顯示的影片剪輯,然後在返回前等待用戶點擊和對話框上的按鈕。 MouseEvent.CLICK事件是異步的,但我不知道如何等待它。

另一種方法是爲對話框創建一個完整的自定義完成事件,該事件被添加到正在調用對話框的屏幕上,我可以繼續使用邏輯並具有禁用其他輸入的布爾值,但這是一個相當大的麻煩我從來沒有做過這樣的事情。

回答

1

你的描述是一個什麼樣的同步和異步是一種誤解。

當對話框出現時,你仍然希望用戶能夠擊中對話框按鈕。如果程序是同步的,那麼整個程序將凍結,因爲鼠標點擊操作的例程永遠不會到達。請記住,flash是單線程

有彈出窗口是共享同一個線程底層應用程序的線程。

最簡單的事情就是要有對派遣,你可以聆聽到您的應用程序的一些接近事件的按鈕的事件。不需要自定義事件類。

dispatchEvent(new Event("close")) 

作爲一個例子。

如果您擔心用戶與應用程序之外的部分進行交互,那麼你可以簡單地畫一個矩形將mouseEnabled真正彈出背後,或檢查出使用Flex的模式對話框類。

+0

是的,我使用的術語鬆散。我不知道Flash真的是單線程的。那麼我將不得不使用close事件。謝謝! – CuddleBunny 2012-07-07 22:59:58