Flex替换DividedBox的Divider图标并实现可关闭隐藏功能

今天扩展实现了DividedBox的“点击展开/隐藏”功能。
DividedBox默认只提供Drag功能,如果要想提供“点击展开/隐藏”功能,那么就需要自己扩展实现了。一般来讲,有两种方式:

(1) 一种方式是extends DividedBox实现类,注册DividerPress事件监听,来达到效果。这种方式的弊端是整个“拖拽线”都会被监听。一般不推荐采用这种方式。

(2) 一种方式是利用DividedBox上的“dividerSkin”这个style属性来自定义拖拽对象样式,并注册MouseClick事件进行处理。一般这种方式用的比较多。
接下来,就讲讲第二种方式的实现:

首先自定义一个DividerBox类,这个类需要被设置到“dividerSkin”这个style属性上。


package
{
import flash.events.MouseEvent;
import mx.containers.Box;
import mx.containers.DividedBox;
import mx.controls.Image;

public class DividerBox extends Box
{
[Embed(source='/assets/images/left.gif')]
public static const DividerIcon_left:Class;

[Embed(source='/assets/images/right.gif')]
public static const DividerIcon_right:Class;

private var image:Image = new Image();
private var bOpened:Boolean = true;
private var dividbox:DividedBox = null;

public function DividerBox()
{
super();
this.width = 10;
this.height = 72;
this.clipContent = true;
image.width = 10;
image.height = 72;
this.addChild( image );

//我这个是在一个HdividedBox中,其默认对dividerbox进行了旋转,所以需要旋转回来。
image.rotation = 90;

this.addEventListener(MouseEvent.CLICK,onMouseClick);
}

override protected function createChildren():void{
super.createChildren();
dividbox = this.parent.parent.parent as DividedBox;
image.source = DividerIcon_left;
}

public function onMouseClick(event:MouseEvent):void{
if(bOpened){
image.source = DividerIcon_right;
dividbox.getChildAt(0).width = 0;
bOpened = false;
}else{
bOpened = true;
image.source = DividerIcon_left;
dividbox.getChildAt(0).width = 180;
}
}

}
}

只需要把这个DividerBox进行设到“dividerSkin”这个style属性上即可,It’s easy.
main_DividBox.setStyle("dividerSkin",DividerBox);
现实中的处理比上面的样例类要复杂很多,毕竟有可能“左隐藏”“右隐藏”“下隐藏”,但剩下的只是围绕这个进行丰富和扩展而已。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值