日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

在Flex中使用Delegate pattern來設計更好的對話框

 ShangShujie 2007-10-16
在Flex中使用Delegate pattern來設計更好的對話框 作者:未知  【字體:  】【顏色:    

在Flex中使用Delegate pattern來設計更好的對話框
不同于C#和Java, Flex 并沒有定義一個明確的Dialog模式,我們常常使用popUp作為對話框, 可是每個人的實現方法各不相同,因此在這里我想介紹一種比較靈活的設計供大家參考.

 

Delegate是Flex中很有用的一個utility類,它起到了封裝一個callback同時保留其this指針的作用。它的用法很類似于C#中的Delegate只不過由于javascript是weak type,所以實現上更容易些。

我們可以在大多數需要callback的地方使用Delegate,而不用擔心this的問題。關于這個class的用法DevNet上有詳細的介紹,我就不多羅嗦了。這里主要用Delegate來設計一個比較靈活的Dialog。

在 應用設計中,我們應該注意到每個popup dialog應該盡可能地被重復利用,打個比方一個輸入用戶信息的dialog, 即可能被建立用戶的函數使用也可能被修改用戶的函數使用。因此這個 dialog class不應該依賴于它的parent.其作用就是接受一個user object讓用戶編輯并且在用戶按了ok后調用指定的callback并傳入被修改的user object.

以 下范例演示了如何利用Delegate來傳遞用戶數據, 當用戶調用createUser()的時候,Delegate封裝了onCreateUser()這個callback函數,而當modifyUser ()的時候,Delegate則封裝了onModifyUser()這個callback. 整個過程中User Dialog并不需要知道究竟是誰在呼叫它.

 

//--------------------------
// Application.mxml
//-------------------------
function beginPopUp(popUpClass, popUpSize, initObj)
{
var w = popUpSize.w;
var h = popUpSize.h;
initObj.x = (this.width-w)/2;
initObj.y = (this.height-h)/2;

var popUp = popupWindow(popUpClass, initObj);
popUp.setSize(w,h);
return popUp;
}

function createUser()
{
beginPopUp( UserDialog, {w:600, h:450}, {delegate:Delegate.create(this, onCreateUser), title:"Create user", user:new User()});
}

function onCreateUser(newUser:User)
{
trace("Created a new user");
}

function modifyUser(user:User)
{
beginPopUp( UserDialog, {w:600, h:450}, {delegate:Delegate.create(this, onCreateUser), title:"Modify user", user:user});
}

function onModifyUser(modifiedUser:User)
{
trace("Modified a user");
}


//-----------------------
// UserDialog.mxml
//----------------------
function doClose(isOk)
{
if (isOk)
{
delegate(dataObj);
}
this.deletePopUp();
}


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多