今年在公司一直做web端的开发,从extjs到svg然后到现在的flex,整整半年的时间,当然flex才刚刚起步。个人认为做系统软件界面用extjs或者jQuery确实是不错的选择,ext提供强大的类库,实现继承任意组合组件,还可以自己开发组件,想想当初学习svg的痛苦,网上的资料太少,技术比较冷门,而且官网已经很久没有更新了,虽然在某些领域(比如电信,电厂系统)尤其是在GIS方面做的确实不错。今年的项目比较大而且应用的技术以较多,新技术更新太快,只有把有限的精力投入到高产出的技术上面来,好了废话不多说了,看看我用flex4开发的第一个程序,实现弹出窗体并将子窗体的数据保存到父窗体中,代码如下:
主程序也就是父窗口:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"
            xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
  <s:layout>
    <s:BasicLayout/>
  </s:layout>

  <fx:Script>
    <![CDATA[
      import mx.managers.PopUpManager;
      private var point1:Point = new Point();
      
      protected function button1_clickHandler():void
      {
        var mm :text2 = text2(PopUpManager.createPopUp(this , text2, true));
        point1.x = btnShow.x;
        point1.y = btnShow.y;
        point1 = btnShow.localToGlobal(point1);//换算成相对于panel的位置
        mm.x = point1.x+15;
        mm.y = point1.y+15;
        mm.lg = lc;
      }
    ]]>
  </fx:Script>

  <fx:Declarations>
    <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  </fx:Declarations>
  <s:Panel x="439" y="234" width="250" height="200">
    <s:Button x="21" y="55" id="btnShow" label="按钮" click="button1_clickHandler()"/>
    <s:TextInput id="lc" x="21" y="10"/>
  </s:Panel>
</s:Application>
跳转子窗体(添加TitleWindow组件):
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"
            xmlns:mx="library://ns.adobe.com/flex/mx" width="228" height="114"    close="PopUpManager.removePopUp(this)">
  <s:layout>
    <s:BasicLayout/>
  </s:layout>

  <fx:Script>
    <![CDATA[
      import mx.managers.PopUpManager;
      public var lg:TextInput;
      protected function getName():void
      {
        lg.text = lc.text;
      }
      protected function button1_clickHandler():void
      {
        // TODO Auto-generated method stub
        getName();
        PopUpManager.removePopUp(this);
      }
    ]]>
  </fx:Script>

  <fx:Declarations>
    <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  </fx:Declarations>
  <s:Button x="10" y="42" label="确定" click="button1_clickHandler()"/>
  <s:TextInput id="lc" x="62" y="5"/>
  <s:Label x="10" y="10" text="用户名"/>
  <s:Button x="125" y="42" label="取消" id="cencle" click="PopUpManager.removePopUp(this)" />
</s:TitleWindow>
代码完整直接复制可运行,运行环境Flex Builder4
效果如下