熟悉Js开发的朋友都应该用过js中的Window.prompt()方法,这个是方法可以很方便的实现弹出窗口提示用户输入,可是在Flex中,只提供了mx.controls.Alert组件,却没有提供类似Window.prompt()这样的方法,正好昨天的项目中,需要这样的组件,我就实现了这个Prompt组件,实现的方法类似于mx.controls.Alert,要显示提示输入窗口调用如下方法:

[java]
show(text:String = "", title:String = "", parent:Sprite = null,
    closeHandler:Function = null, value:String = "", modal:Boolean = true):Prompt

其中Text,是提示输入的文本消息,title为提示输入窗口的标题,parent用于窗口居中,closeHandler用于监听窗口关闭,value是确实输入值,modal是否modal窗口。

其中closeHandler的定义如下:

[java]
function addReportTypeHandler(event:PromptEvent):void

event.detail包含是点击确定还是取消,event.data包含用户输入的值。

详细用法如下:

[java]
import com.eshangrao.controls.Prompt
....
Prompt.show("请输入新报表类别名称","修改报表类别",null,addReportTypeHandler,oldName);
...
private function addReportTypeHandler(event:PromptEvent):void{
  if(event.detail!=Alert.CANCEL){
    if(event.data!=''){
	...
    }
  }
}

下面是一个使用范例:

[java]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
	<mx:Script>
		<![CDATA[
			import com.eshangrao.controls.Prompt;
			import com.eshangrao.events.PromptCloseEvent;
			import mx.controls.Alert;

			private function showPrompt():void{
				Prompt.show("清输入某些内容","提示框",this,closeHandler,"somedaat");
			}
			private function closeHandler(event:PromptCloseEvent):void{
				Alert.show(event.detail.toString()+event.data);
			}
		]]>
	</mx:Script>
	<mx:Button label="prompt" click="showPrompt()"/>
</mx:Application>

运行示例

本组件已经包含入Plum中,点击这里下载源码及二进制SWC包。详细的组件用法请查看文档