`
luhantu
  • 浏览: 199830 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

继承父类并继承父类的控件

    博客分类:
  • Flex
阅读更多

在Flex当中,如果父类已经拥有了子元素,然后你再继承这个父类,并且在子类当中也定义了mxml的标签元素,那么将会只显示子类的mxml标签元素而不会显示父类的mxml标签元素。

当然你可以重写createChildren方法,然后把你要显示的子元素以代码形式添加,这样绝对可以把父类的元素全部继承下来。但是为什么写标签形式就不行呢?

我们仔细窥探一下,发现用mxml标签形式写的时候,flex会把这些标签放通过 mxmlContent的set方法放到一个数组中,然后在createChildren的时候把这个数组中的元素一个一个加到显示列表中。

如果你的子类继承了父类,而且子类也定义了mxml标签,那么当初始化子类的时候,也会调用mxmlContent的方法,这样的话就会把父类的保存父类标签的数组冲掉,导致只会现实子类的标签了。

明白了这些,那我就直接贴代码了。

App:

 

<?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" 
			   xmlns:Vgroup="com.view.Vgroup.*">
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<Vgroup:ChildVGroup2/>
	<Vgroup:ChildVGroup/>
</s:Application>
 ChildVGroup:

 

<?xml version="1.0" encoding="utf-8"?>
<Vgroup:ParentVGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
				   xmlns:s="library://ns.adobe.com/flex/spark" 
				   xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:Vgroup="com.view.Vgroup.*">
	
	<fx:Script>
		<![CDATA[
			override protected function createChildren():void
			{
				var currentMxmlContent:Array = super.mx_internal::getMXMLContent();
				var allMxmlContentArray:Array = mxmlContentArray.concat(currentMxmlContent);
				mxmlContent = allMxmlContentArray;
				super.createChildren();
			}
		]]>
	</fx:Script>
	<s:Button label="tv3"/>
	<s:Button label="tv4"/>
	<s:Button label="tv5"/>
	<s:Button label="tv6"/>
</Vgroup:ParentVGroup>

  ChildVGroup2 和 ChildGroup 一样,只是button的label不一样,以此来区别。

ParentVGroup:

<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
		  xmlns:s="library://ns.adobe.com/flex/spark" 
		  xmlns:mx="library://ns.adobe.com/flex/mx">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			public var mxmlContentArray:Array;//在加载类的时候,第一次会加载Parent的容器的child(例如v1,v2),然后放到这个数组中。
			//在默认的实现当中,如果parent的子类也有child,那么就会覆盖这个数组。所以我们要先把parent的child的保存起来。
			override public function set mxmlContent(value:Array):void
			{
				super.mxmlContent = value;
				if(!mxmlContentArray)
				{
					mxmlContentArray = value;
				}
			}
		]]>
	</fx:Script>
	<s:Button label="v1"/>
	<s:Button label="v2"/>
</s:VGroup>

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    避免用户自定义控件定义的父类多次加载

    在一个asp.net项目中,用户自定义控件是很经常使用的,一个项目中一般都会有多个用户自定义控件,而为了代码重用,通常这些控件都会继承一个父类, 一个页面还会引用多个用户自定义控件。 这种情况如果不注意控制就...

    父类统一修改控件值

    让你的窗体都继承一个类,在这个类里面写个方法,判断窗体里是否有DevExpress.XtraEditors.DateEdit控件,有的话就给他的MaxValue和MinValue设置下值

    java 程序设计试题及答案(8套合辑)

    D、子类只能继承父类的方法,而不继承状态 7.下列关于构造方法的说法正确的是( )。 A、因为构造方法名与类名必须相同,构造方法在创建对象时被执行。 B、构造方法是给对象赋初值,所以没有返回值,必须用void来...

    C#自定义时钟控件

    继承该父类定义了两个子类NumberClock(数字钟)和GraphClock(模拟钟),通过该程序可以清楚地理解面向对象的概念,包括:封装、继承、多态、事件等,是很好地学习面向对象程序设计、自定义控件的好例子。

    Android中自定义一个View的方法详解

    Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助。 注意点① 用xml定义...

    Delphi-DirectUI

    父类为TJDUIControl,继承此类并重写绘制方法可创建自己的DirectUI控件。 ~~~pascal type TJDUIImageView = class(TJDUIGraphicsControl) private FImageFile: String; protected procedure PaintSelf...

    Python程序设计之GUI(1)

    1.GUI常用库 ①标准库:tkinter ②扩展库:wxPython、PyGObject、PyQt、PySide ...class myFrame(wx.Frame): #继承父类 def __init__(self,superior): wx.Frame.__init__(self,parent=superior,title=u'My First Fo

    滑动关闭界面

    滑动关闭界面,新建一个布局,在该布局内统一做滑动处理,创建成一个父类A,所以需要滑动关闭的界面继承该父类

    Qt自写ToolBox可以同时展开多个Bar(升级版)

    1. 控件由SSToolBox作为父类, SSCameraToolBox作为子类(因为我需要几个不同的ToolBox,所以做了继承), SSToolBoxItem作为添加到SSCameraToolBox的每一项Bar 2. 每添加一个SSToolBoxItem,都会提供一个接口设置相...

    简单介绍Android开发中的Activity控件的基本概念

    所有应用的Activity都继承于android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能。 Activity 生命周期图如下: 在android中,Activity拥有四种基本...

    PyQt编程之如何在屏幕中央显示窗体的实例

    class Center(QtGui.QWidget): #继承父类QWidget def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) #需要两个构造函数,一个Center类的,一个QWidget类的 self.setWindowTitle('center') ...

    ATM机(嵌入式、C++语言、Visual Studio软件、Sqlite3数据库)

    一、技术要点:基于封装、继承、多态三大特性,结合单例模式实现数据库保存用户信息的操作 二、主要功能: ① 开户与登录,开户成功自动生成卡号与ID并将用户信息保存在数据库; ② 实现存款、取款、转账、改密及...

    xamarin学习笔记B03(ios的UIView的了解)

    xamarin学习笔记B03(ios的UIView的了解)它是所有视图控件的父类。例如UIButton、UILabel、UIImageView等都最终是继承自UIView。它可以添加其它视图作为它的子视图。

    WinForm.UI:WinForm 皮肤,自定义控件

    WinForm 皮肤,自定义控件 使用方式: BaseForm: public partial class MainForm : BaseForm //修改父类 Form 为 BaseForm Table : table支持列、行 拖动;点击标题排序; 当数据源更改时,需调用以下方法: table...

    Android实现View滑动的几种方式

    什么是View?实现View滑动的方式有哪些? 1. 关于View我们需要知道的 (1)什么是View?...通过继承View,并重写相应方法,我们就能够实现具有各种外观及行为的UI控件。Button等控件我们之所以能够直接

    随手指运动的小球

    当我们打算派生自己的 UI 控件时,首先定义一个继承 View 基类的子类,然后重写父类的方法。该代码演示了其中一些重写的方法自定义控件后的效果。该代码借鉴于疯狂IOS一书中的源码

    WSLWaterFlowLayout:功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的控件, 目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、栅格布局瀑布流 4种样式的瀑布流布局

    功能描述: 是在继承于UICollectionViewLayout的基础上封装的控件, 目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、...

    C# 3.0完全自学宝典 (F)

    NewMethod 演示new关键字覆盖父类方法实例 UseClass 演示C#类的使用实例 UseClassProperty 演示类属性(Property)的使用 UseDElegate 演示委托的使用 UseException 演示异常的使用 UseInterface 演示接口的...

    VC++深入详解源码

    1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时; 2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数); 3、在类中的所有非静态的对象数据成员,它们对应的类中有...

    Java超级万年历课程设计.doc

    编写一个万年历理解图像界面的基本组 织窗口,以及类、方法的调用,以及添加控件、并在窗口中显示,可以对年份、月份、 当前的时间进行查询方便用户的使用。 2.设计方案论证 2.1需求分析 本次课程设计是编写一个...

Global site tag (gtag.js) - Google Analytics