2011年6月26日

Flex中使用對話框

對話框是常常必須使用的,不管是在使用提示訊息還是功能選擇,他都扮演一個很重要的角色,在Flex中使用對話框的方式非常簡單,只需要透過Alert類別中的靜態方法show就可以顯示了(Android Tosat很類似),以下是使用的方式。

Show方法
public static function show(text:String = "", title:String = "", flags:uint = 0x4, parent:Sprite = null, closeHandler:Function = null, iconClass:Class = null, defaultButtonFlag:uint = 0x4,

彈出 Alert 控制項的靜態方法。在 Alert 控制項中選擇一個按鈕或按下 Esc 鍵時,將關閉該控制項。

參數
text:String (default = "") — Alert 控制項中顯示的文本字串。此文本將在警告對話方塊中居中顯示。

title:String (default = "") — 標題列中顯示的文本字串。此文本左對齊。

flags:uint (default = 0x4) — Alert 控制項中放置的按鈕。有效值為 Alert.OKAlert.CANCELAlert.YES Alert.NO。預設值為 Alert.OK。使用按位元 OR 運算子可顯示多個按鈕。例如,傳遞 (Alert.YES | Alert.NO) 顯示按鈕。無論按怎樣的順序指定按鈕,它們始終按照以下順序從左到右顯示:確定取消

parent:Sprite (default = null) — Alert 控制項在其上居中的對象。

closeHandler:Function (default = null) — 按下 Alert 控制項上的任意按鈕時將調用的事件處理函數。傳遞給此處理函數的事件物件是 CloseEvent 的一個實例;此物件的 detail 屬性包含 Alert.OKAlert.CANCELAlert.YES 




以三個小例子解釋上面的參數
// 最基本的提示訊息格式
protected function button1_clickHandler(event:MouseEvent):void
{
    Alert.show("你點擊了按鈕一","提示訊息");
}
           
// 帶有內建YES,NO選項的對話框
protected function button2_clickHandler(event:MouseEvent):void
{
    Alert.show("你點擊了按鈕二,是否要關閉","提示訊息
    ",Alert.YES|Alert.NO,btn3,closeHandler);
}
           
// 自定義對話框按鈕的對話框
protected function button3_clickHandler(event:MouseEvent):void
{
    Alert.yesLabel = "";
    Alert.noLabel  = "";
    Alert.show("你點擊了按鈕三,是否要關閉","提示訊息
     ",Alert.YES|Alert.NO,btn2,closeHandler2);
}

button1_clickHandler中我們會顯示出一個最簡單的提示框,會顯示出我們要說明的文字以及標題只有一個按鈕可以按。



在按鈕二中我們可以看到我們新增了三個參數在show中,分別為flag,parent,closeHandler其中



flag
表示我們對話框裏頭的按鈕,它對應了Alert中定義的一些整數,假如我們要顯示OK就對應到Alert.OK這個變數中,這裡我們可以使用 | 將多個需求OR起來。
parent
表示對話框要顯示的位置,這裡我們設定顯示位置為btn3,因此它就會以btn3的座標作為對話框顯示左上點的座標。
closeHandler
在裡面我們可以定義我們點擊對話框所要處理的事件,我們在點擊按鈕時會產生AlertEvent事件,因此我們的Handler必須依照這個事件類型來做不同的處理。


closeHandler的例子

private function closeHandler2(e:CloseEvent):void
{
    if(e.detail == Alert.YES){
        Alert.show("你點擊了是","訊息");
    }
    else{
        Alert.show("你點擊了否","訊息");
    }
}
































沒有留言:

ShareThis