zoukankan      html  css  js  c++  java
  • Flex自定义组件

    使用MXML标签定义

    主文件Main1.mxml:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="*" layout="vertical">
      <mx:Style>
        Application{fontSize:14px;}
      </mx:Style>
      <MyComp:MyComp1/>
    </mx:Application>


    注:xmlns:MyComp="*"自定义命名空间其实很类似于包的概念用来管理组件的。实际当中最好把自己的组件文件分文件夹管理。

    组件定义MyComp1.mxml:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
      <mx:Script>
        <![CDATA[
          import mx.controls.ComboBox;
          import mx.controls.Alert;
          import mx.events.DropdownEvent;
          private function closeHandler(event:DropdownEvent):void
          {
            //Alert.show((event.currentTarget as ComboBox).selectedLabel);
            Alert.show((event.currentTarget as ComboBox).selectedItem.toString());
          }
        ]]>
      </mx:Script>
      <mx:Label text="城市:" />
            <mx:ComboBox close="closeHandler(event);">
                    <mx:dataProvider>        
                            <mx:String>济南</mx:String>
                            <mx:String>威海</mx:String>
                            <mx:String>烟台</mx:String>
                    </mx:dataProvider>
            </mx:ComboBox>  
    </mx:HBox>


    注:组件的文件名就对应着将来使用时的mxml标签名,根标签就是你用来扩展的父类,这里是HBox。在里面this引用的是你的组件类。

    使用AS3定义

    组件定义MyComp2.as

    package mycomp
    {
      import flash.events.KeyboardEvent;
      
      import mx.controls.TextArea;

      public class MyComp2 extends TextArea
      {
        public function MyComp2()
        {
          super();
          addEventListener(KeyboardEvent.KEY_DOWN,handleKeyDown);
        }
        private function handleKeyDown(evt:KeyboardEvent):void
        {
          if(evt.ctrlKey && evt.keyCode==90)
          text="";
        }
        
      }
    }


    注意类名和文件名同,同时包结构也要和目录结构一致。

    扩展了TextArea添加了一个事件处理,用户按Ctrl+Z时会清空文本框。

    主文件Main2.mxml:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="mycomp.*" layout="vertical">
      <mx:Style>
        MyComp2{fontSize:14px;}
      </mx:Style>
      <MyComp:MyComp2 id="myTxt" color="#008800" text="这是一段测试用的文本..." />
    </mx:Application>


    注意名字空间mycomp.*这里很像import mycomp.*;呵呵。

    注:
    我们也可以不改变名字,人采用原来的,如下TextArea.as:



    主文件:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="mycomp.*" layout="vertical">
      <mx:Style>
        TextArea{fontSize:14px;}
      </mx:Style>
      <MyComp:TextArea id="myTxt" color="#008800" text="这是一段测试用的文本..." />
      <mx:TextArea text="这是系统默认的文本框" />
    </mx:Application>
  • 相关阅读:
    数据库系统概念PDF下载
    数据库系统基础教程PDF下载
    推荐系统技术、评估及高效算法PDF下载
    系统分析与设计方法PDF下载
    像计算机科学家一样思考pythonPDF下载
    学习bashPDF下载
    厚书读薄丨《Vim实用技巧》第一部分 模式
    Code Server 是什么?
    ubuntu磁盘分区
    Linux自学之旅-基础命令(umask默认权限)
  • 原文地址:https://www.cnblogs.com/hainange/p/6153102.html
Copyright © 2011-2022 走看看