在Panel的title中添加容器
作者: admin | 发布时间: 2009年08月18日, 星期二 15:35
项目中遇到个问题,就是要把Panel的title做成导航栏,也就是要加入其它的容器,要对Panel做一下小小的改动。
原来见过一个第三方组件实现了这个功能,但是现在忘记了那个第三方组件了,实现思路很简单,title其实是一个UIComponent,在UIComponent直接添加容器就好。
代码如下
<!--l version="1.0" encoding="utf-8-->
<![CDATA[
import mx.containers.HBox;
private var _titleHBox:HBox;
private var titleBoxChanged:Boolean;
public function get titleBox():HBox{
return _titleHBox;
}
public function set titleBox(value:HBox):void{
if(_titleHBox == value)
return;
if(_titleHBox && titleBar.contains(_titleHBox))
titleBar.removeChild(_titleHBox);
_titleHBox = value;
titleBoxChanged = true;
invalidateProperties();
invalidateDisplayList();
}
override protected function commitProperties():void{
super.commitProperties();
if(titleBoxChanged){
if(_titleHBox)
titleBar.addChild(_titleHBox);
titleBoxChanged = false;
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth,unscaledHeight);
if(_titleHBox && titleBar.contains(_titleHBox)){
_titleHBox.height = titleBar.height;
_titleHBox.width = titleBar.width*0.8;
_titleHBox.x = 0;
_titleHBox.y = 0;
}
}
]]>
作者: admin | 发布时间: 2009年08月18日, 星期二 15:35
项目中遇到个问题,就是要把Panel的title做成导航栏,也就是要加入其它的容器,要对Panel做一下小小的改动。
原来见过一个第三方组件实现了这个功能,但是现在忘记了那个第三方组件了,实现思路很简单,title其实是一个UIComponent,在UIComponent直接添加容器就好。
代码如下
<!--l version="1.0" encoding="utf-8-->
<![CDATA[
import mx.containers.HBox;
private var _titleHBox:HBox;
private var titleBoxChanged:Boolean;
public function get titleBox():HBox{
return _titleHBox;
}
public function set titleBox(value:HBox):void{
if(_titleHBox == value)
return;
if(_titleHBox && titleBar.contains(_titleHBox))
titleBar.removeChild(_titleHBox);
_titleHBox = value;
titleBoxChanged = true;
invalidateProperties();
invalidateDisplayList();
}
override protected function commitProperties():void{
super.commitProperties();
if(titleBoxChanged){
if(_titleHBox)
titleBar.addChild(_titleHBox);
titleBoxChanged = false;
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth,unscaledHeight);
if(_titleHBox && titleBar.contains(_titleHBox)){
_titleHBox.height = titleBar.height;
_titleHBox.width = titleBar.width*0.8;
_titleHBox.x = 0;
_titleHBox.y = 0;
}
}
]]>