昨天看了一下Macromedia的Flex技术,感觉很不错,于是把刚做好的邮编区号查询Js+Xml版改装了一下弄出了这个邮编区号查询flex版(这可是我的第一个flex程序哦^O^)。
源码压缩包中除了包含flex的源文件zip.mxml外,还有编译生成的flash文件,要是你那里没有flex的运行环境,就用邮编区号查询flash版好了,不过Flash播放插件得是最新的7.0才可以使用。
下面是相关的核心代码:
1、data.xml文件代码(这里只列了5条,明白他的结构就可以):
<?xml version="1.0" encoding="gb2312"?>
<!-- 邮编区号数据 -->
<MyData>
<Item Province="北京" County="北京" Zipcode="100000" Areacode="010" />
<Item Province="北京" County="通县" Zipcode="101100" Areacode="010" />
<Item Province="北京" County="昌平" Zipcode="102200" Areacode="010" />
<Item Province="北京" County="大兴" Zipcode="102600" Areacode="010" />
<Item Province="北京" County="密云" Zipcode="101500" Areacode="010" />
</MyData>
2、zip.mxml文件代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" pageTitle="全国邮编区号查询Flex版">
<mx:Model id="myZIP" source="data.xml"></mx:Model>
<mx:Panel title="全国邮编区号查询" width="500" height="90" fontSize="14" fontFamily="宋体" verticalAlign="middle" textAlign="center">
<mx:HBox marginLeft="30">
<mx:ComboBox id="strField" width="70">
<mx:dataProvider>
<mx:Array>
<mx:Object label="省份" data="Province"/>
<mx:Object label="地区" data="County"/>
<mx:Object label="邮编" data="Zipcode"/>
<mx:Object label="区号" data="Areacode"/>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<mx:ComboBox id="strReg" width="100">
<mx:dataProvider>
<mx:Array>
<mx:Object label="等于" data="="/>
<mx:Object label="包含" data="Like"/>
<mx:Object label="以...开头" data="Start"/>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<mx:TextInput textAlign="left" id="strKey" text="山东"/>
<mx:Button label="查询" fontSize="12" click="Search();"/>
</mx:HBox>
</mx:Panel>
<mx:Script>
<![CDATA[
function Search(){
var my_Keyarray:Array=strKey.text.split(" ");
var my_Key="";
for(var i:Number = 0; i<my_Keyarray.length; i++){
if(my_Keyarray[i]!=""){
my_Key+=my_Keyarray[i];
}
}
strKey.text=my_Key;
if(strKey.text==""){
alert("关键词不可为空!","系统提示");
}else{
var my_array:Array =myZIP.Item;
var ok_array:Array=new Array();
var my_Field,my_Reg
for(var i:Number = 0; i<my_array.length; i++){
var myFieldValue;
switch(strField.selectedItem.data){
case "Province" :
myFieldValue=my_array[i].Province;
break;
case "County" :
myFieldValue=my_array[i].County;
break;
case "Zipcode" :
myFieldValue=my_array[i].Zipcode;
break;
case "Areacode" :
myFieldValue=my_array[i].Areacode;
break;
default :
myFieldValue=my_array[i].Province;
}
switch(strReg.selectedItem.data){
case "=" :
if(myFieldValue==strKey.text){
ok_array.push(my_array[i]);
}
break;
case "Like" :
if(myFieldValue.indexOf(strKey.text)>-1){
ok_array.push(my_array[i]);
}
break;
case "Start" :
if(myFieldValue.indexOf(strKey.text)==0){
ok_array.push(my_array[i]);
}
break;
default :
if(myFieldValue==strKey.text){
ok_array.push(my_array[i]);
}
break;
}
}
//alert(ok_array.length.toString());
Show.dataProvider=ok_array;
if(strReg.selectedItem.label.indexOf("...")>-1){
Result.title="搜索"+strReg.selectedItem.label.substring(0,strReg.selectedItem.label.indexOf("..."))+"【"+strKey.text+"】"+strReg.selectedItem.label.substr(strReg.selectedItem.label.indexOf("...")+3)+"的【"+strField.selectedItem.label+"】,共找到"+ok_array.length.toString()+"条信息。";
}else{
Result.title="搜索"+strReg.selectedItem.label+"【"+strKey.text+"】的【"+strField.selectedItem.label+"】,共找到"+ok_array.length.toString()+"条信息。";
}
}
}
]]>
</mx:Script>
<mx:Panel id="Result" width="500" height="400" fontSize="14" fontFamily="宋体">
<mx:DataGrid id="Show" height="100%" width="100%">
<mx:columns>
<mx:Array>
<mx:DataGridColumn columnName="Province" headerText="省份"/>
<mx:DataGridColumn columnName="County" headerText="地区"/>
<mx:DataGridColumn columnName="Zipcode" headerText="邮编"/>
<mx:DataGridColumn columnName="Areacode" headerText="区号"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
<mx:Style>
global {
font-family: 宋体;font-size: 12px;
}
</mx:Style>
</mx:Application>
=========== 最后附上几个flex技术论坛地址 ==============