Mar 21
如果你只是需要得到一个简单的yes/no的确认结果那Alert是一个不错的选择,但是如果需要取得用户名字或者其他信息呢?JavaScript有一个prompt(),而Flex则有一个非常强壮的PopUpManager类。
接下来的例子演示了如何创建一个包括一个标签(Label),一个输入框(TextInput)和两个按钮的自定义pop-up对话框。并且演示了如何利用ActionScript来代替MXML来创建多个Flex控件和容器。
下面是完整代码:
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="init()">
- <mx:Script>
- <![CDATA[
- import mx.containers.ControlBar;
- import mx.containers.Panel;
- import mx.containers.VBox;
- import mx.controls.Button;
- import mx.controls.Label;
- import mx.controls.Spacer;
- import mx.controls.TextInput;
- import mx.managers.PopUpManager;
- private var panel:Panel;
- private function init():void {
- var vb:VBox = new VBox();
- var label:Label = new Label();
- var textInput:TextInput = new TextInput();
- var cb:ControlBar = new ControlBar();
- var s:Spacer = new Spacer();
- var b1:Button = new Button();
- var b2:Button = new Button();
- s.percentWidth = 100;
- b1.label = "OK";
- b1.addEventListener(MouseEvent.CLICK, closePopUp);
- b2.label = "Cancel";
- b2.addEventListener(MouseEvent.CLICK, closePopUp);
- cb.addChild(s);
- cb.addChild(b1);
- cb.addChild(b2);
- label.text = "Please enter your name:";
- vb.setStyle("paddingBottom", 5);
- vb.setStyle("paddingLeft", 5);
- vb.setStyle("paddingRight", 5);
- vb.setStyle("paddingTop", 5);
- vb.addChild(label);
- vb.addChild(textInput);
- panel = new Panel();
- panel.title = "My Title";
- panel.width = 240;
- panel.height = 180;
- panel.addChild(vb);
- panel.addChild(cb);
- }
- private function closePopUp(evt:MouseEvent):void {
- PopUpManager.removePopUp(panel);
- }
- private function createPopUp(evt:MouseEvent):void {
- PopUpManager.addPopUp(panel, this, true);
- PopUpManager.centerPopUp(panel);
- }
- ]]>
- </mx:Script>
- <mx:Button label="Launch Pop-Up" click="createPopUp(event)" />
- </mx:Application>
下面是Demo(可以右键察看源代码):
原文作者:Peter deHaan 翻译:minidxer
