2010-02-18 44 views
0

我想創建一個對話框或警告框,在那裏DisplayObject將採取和強制焦點,直到一個好的按鈕或某些東西釋放鎖。謝謝。如何在actionscript 3中強制或鎖定焦點?

+0

您是否想要全局焦點(如原生MessageBox的工作方式),還是僅僅爲了防止其他您的Flash應用程序中的DisplayObjects無法關注您的「對話框」? – 2010-02-18 22:50:46

+0

全球焦點,你不能點擊其他任何東西,直到明確的解鎖,或者通過關閉按鈕或其他代碼。 – Timmy 2010-02-18 22:53:00

回答

4

做到這一點的簡單方法是讓你的「對話」與舞臺一樣大,在對話本身周圍有一個重要的透明區域。

透明區域可以聽取任何鼠標點擊,並將它們吞下(這將防止它們被顯示列表中的東西拾起)。

要顯示警報,只需將其粘貼在其他任何東西上,當用戶關閉它時,請再次拿走它。

1

爲此,您需要禁用對'alert'DisplayObject下的所有對象的訪問。有這樣做的多種方法,在這裏2 I能想到:

  1. 遍歷顯示列表和您的警報深度明智下禁用任何顯示對象。
  2. 用攔截器欺騙它。當顯示警報時,顯示阻止用戶懸停/單擊對象的另一個剪輯(可能有alpha設置爲0)。攔截器可能需要一些設置(buttonMode = true,useHandCursor = false等)

這種'模態'行爲已經出現了一些,所以可能不需要重新發明輪子,這取決於您的當前設置。

如果你正在使用Flex框架,你得在功能,支持Flash可以使用Alert Manager from the Yahoo! Flash Astra Components

alert manager thumb http://developer.yahoo.com/flash/astra-flash/alertmanager/images/emailForm.gif

古德勒克,

+0

謝謝,至少我知道我不會錯過某些明顯的東西(比如某個地方的某個屬性或函數!) – Timmy 2010-02-18 23:01:13

1

如果您正在使用Flex和動作,只需使用SkinnablePopUpContainer

var alt:CustomPopUp = new CustomPopUp(); 
alt.open(this,true) //the second variable is for modal, which will disable view 
this.enabled = false; //this will grey out the parent view and provide visual focus to your popup.