zoukankan      html  css  js  c++  java
  • AS 3.0 建立自定义组件

         每个Flex 组件都是一个as 类,不管它是否是一个UI控制器,一个容器或者一些其它类型的组件。在MXML中能建立的都能在AS中建立。有一些可以用as做到,但是mxml做不到的。
         建立一个as组件的步骤和你建立任何的as类的步骤非常类似。首先,决定你的新类要扩展什么父类。然后,决定你的类需要声明什么属性。下一步,决定你需要实现的方法。你也可能需要声明你的组件发送的事件。如果你的组件是一个可视类,你很可能需要覆盖 createChildren() 和 updateDisplayList()方法,因为它们是Flex 组件用来建立和布局组件的任何子元素的。
    建立类的结构
         通常根据你需要的功能来选择继承什么超类。

    覆盖createChildren()方法


    当用mxml建立一个组件,可以使用标准的mxml标签添加元素到组件中。当你用as建立组件时,这些标签对你没用,可以建立你组件的子对像,你需要覆盖你组件父类的createChildren()方法,createChildren()方法会在Flex组件初始化期间被调用。
    初始化次序如下:
    Constructor-构造器
    createChildren()-建立子对像
    commitProperties()-提交属性
    measure()-测量
    updateDisplayList()-更新显示列表
    后面四个方法在mx.core.UIObject里实现,事实上用as3.0建立的组件都需要覆盖createChildren()方法和updateDisplay()方法。
    当你需要设置属性依赖其它已设置的属性时,你需要覆盖commitProperties(),或者你想要明确地传递在建立新的组件时的属性时,所有 子对像建立完成后,commitProperties()方法用来设置所有传递进来的属性。在等待commitProperties()被调用之前,你需 要知道这些子对像已经成功实例化在它们的属性设置之前。
    如果必要的话,measure()方法是使用你能够手动计算所有建立的子对像的宽和高,这个方法经常在建立一个新容器的唯一布局规则时需要被覆盖。


    明白chrome(铬)和rawChildren(原始子对像)


    Flex容器有两个独特的部分:
    布局区域:子对像绘制的地方
    铬:由其它所有元素组成的,像边框,背景,边缘,滚动条,头部,脚部等等。
    在Panel类中,标题条是一个chrome。
    flash.display.DisplayObjectContainer 基础类在绘制子对像和铬之间没有什么区别,都可以容易地使用 getChildAt 和 numChildren属性。为了访问到所有子元素,你需要使用rawChildren属性。同样地,添加元素到铬,它们需要被添加到 rawChildren 属性。如果你想添加元素到标题栏,你必须使用rawChildren.addChild()。

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
    云原生时代,2个方案轻松加速百万级镜像
    Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
  • 原文地址:https://www.cnblogs.com/chocolate/p/1446499.html
Copyright © 2011-2022 走看看