Thứ Sáu, 16 tháng 1, 2009

PopUp Window

Có nhiều cách để tạo một cửa sổ window, dưới đây là một mẫu code ngắn, có thể chế biến lại phù hợp với yêu cầu:

-Tạo lớp để có một window resizable, có nút close (các chức năng khác bạn tự thêm vào): file ResizablePanel.as
package
{
import flash.events.MouseEvent;

import mx.containers.TitleWindow;
import mx.controls.Button;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;

public class ResizablePanel extends TitleWindow
{
private var resizer:Button = new Button();

public function ResizablePanel()
{
super();
resizer.addEventListener(MouseEvent.MOUSE_DOWN, resizeDown);
this.showCloseButton="true";

this.addEventListener(CloseEvent.CLOSE, closeDialog);
}
override protected function createChildren():void{
resizer.height=10;
resizer.width = 10;
super.createChildren();
rawChildren.addChild(resizer);
}
override protected function updateDisplayList(w:Number, h:Number):void{
super.updateDisplayList(w,h);
resizer.y = h - resizer.height;
resizer.x = w - resizer.width;
}
private function resizeDown(e:MouseEvent):void{
stage.addEventListener(MouseEvent.MOUSE_MOVE, scalePanel);
stage.addEventListener(MouseEvent.MOUSE_UP, stopScale);
}
private function scalePanel(e:MouseEvent):void{
if((stage.mouseX - x)>50)
width = (stage.mouseX-x);
if((stage.mouseY-y)>50)
height = (stage.mouseY-y);
}
private function stopScale(e:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, scalePanel);
stage.removeEventListener(MouseEvent.MOUSE_UP, stopScale);
}
//function close window
private function closeDialog(event:CloseEvent) : void {
this.parent.removeChild(this);
}
}
}

lớp trên chỉ tạo một window trống. Để có nội dung như ý mình (VD: có form đăng nhập, có ....) bạn tạo một component mxml mở rộng lớp trên ra. Ở đây, để đơn giản, chỉ hiển thị window trống này thôi:

Hiển thị window:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="createPopUpWindow()" layout="absolute" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
function createPopUpWindow():void
{
var popupWindow:Register = new Register();
PopUpManager.addPopUp(popupWindow, this);
}
]]>
</mx:Script>
</mx:Application>

Không có nhận xét nào:

Đăng nhận xét