- 浏览: 97782 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chensong215:
无法获取到ProgressEvent中的bytesTotal
自定义DownloadProgressBar -
qq2464785999:
非常感谢。
测试后,发现要用相对路径的话,好像要这么写
va ...
Flex写XML文件
Flex:在PANEL的title上加一个button[转]
在panel的titleBar上添加按钮,首先 override createChildren方法, 其中加入panel.rawChildren.addChild(Button),然后override panel的layoutChrome方法定置按钮的位置。
例子如下:
?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166 package{
import mx.containers.Panel;
import mx.controls.Button;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import mx.effects.Resize;
import mx.controls.Alert;
import mx.controls.Label;
[Event(name="restore")]
[Event(name="maximize")]
public class FlexPanel extends Panel{
private var state:int = 0;
private var restoreBtn: Button;
private var minBtn: Button;
private var closeBtn: Button;
[Embed("../assets/minICON.png")] // 这里我自定义了按钮外观
private var minIcon:Class;
[Embed("../assets/minOverICON.png")]
private var minOverIcon:Class;
[Embed("../assets/restoreICON.png")]
private var restoreIcon:Class;
[Embed("../assets/restoreOverICON.png")]
private var restoreOverIcon:Class;
[Embed("../assets/closeICON.png")]
private var closeIcon:Class;
[Embed("../assets/closeOverICON.png")]
private var closeOverIcon:Class;
private var resize: Resize;
private var effectTime: Number = 400;
private static var _instance: FlexPanel;
public function FlexPanel(){
super();
_instance = this;
}
public override function initialize():void{
super.initialize();
this.maxHeight = this.height;
initEffect();
}
private function setState(state:int):void{
this.state=state;
if (state==0){
this.dispatchEvent(new Event('restore'));
} else {
this.dispatchEvent(new Event('maximize'));
}
}
/* ************************************************* */
protected override function createChildren(): void {
super.createChildren();
this.titleBar.addEventListener(MouseEvent.MOUSE_DOWN, doDrag);
this.titleBar.addEventListener(MouseEvent.MOUSE_UP, doDrop);
restoreBtn = new Button();
restoreBtn.addEventListener("click",doRestore);
restoreBtn.setStyle("overIcon",restoreOverIcon);
restoreBtn.setStyle("downIcon",restoreIcon);
restoreBtn.setStyle("upIcon",restoreIcon);
restoreBtn.visible=false;
rawChildren.addChild(restoreBtn);
minBtn = new Button();
minBtn.addEventListener("click",doMin);
minBtn.setStyle("overIcon",minOverIcon);
minBtn.setStyle("downIcon",minIcon);
minBtn.setStyle("upIcon",minIcon);
minBtn.visible = true;
rawChildren.addChild(minBtn);
closeBtn = new Button();
closeBtn.addEventListener("click",doClose);
closeBtn.setStyle("overIcon",closeOverIcon);
closeBtn.setStyle("downIcon",closeIcon);
closeBtn.setStyle("upIcon",closeIcon);
closeBtn.visible = true;
rawChildren.addChild(closeBtn);
}
/* ************************************************** */
protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
private function doMin(event:Event):void{
setState(1);
minBtn.visible= false;
restoreBtn.visible= true;
minEffect();
//Alert.show(this.verticalScrollBar.toString());
}
private function doRestore(event:Event) :void{
setState(0);
minBtn.visible= true;
restoreBtn.visible= false;
restoreEffect();
}
private function doClose(event:Event) :void{
this.visible = false;
this.parent.removeChild(this);
}
private function doDrag(event:Event):void{
this.startDrag();
}
private function doDrop(event:Event):void{
this.stopDrag();
}
/* ********************************************************************************* */
protected override function layoutChrome(unscaledWidth: Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth, unscaledHeight);
var margin:int = 0;
var pixelsFromTop:int = 6;
var pixelsFromRight:int = 12;
var buttonWidth:int = 18;
var buttonHeight:int = 17;
var distance:int = 7;
var x:Number = this.width - buttonWidth*2 - distance - pixelsFromRight;
var y:Number = pixelsFromTop;
restoreBtn.setActualSize(buttonWidth, buttonHeight);
restoreBtn.move(x,y);
minBtn.setActualSize(buttonWidth, buttonHeight);
minBtn.move(x,y);
closeBtn.setActualSize(buttonWidth, buttonHeight);
closeBtn.move(this.width - buttonWidth - pixelsFromRight,y);
}
/* ********************************************************************************* */
private function initEffect():void{
resize = new Resize(_instance);
resize.heightTo = this.titleBar.height;
resize.duration = effectTime;
}
private function minEffect():void{
resize.heightTo = this.titleBar.height;
resize.end();
resize.play();
}
private function restoreEffect():void{
resize.heightTo = this.maxHeight;
resize.end();
resize.play();
}
}
}
在panel的titleBar上添加按钮,首先 override createChildren方法, 其中加入panel.rawChildren.addChild(Button),然后override panel的layoutChrome方法定置按钮的位置。
例子如下:
?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166 package{
import mx.containers.Panel;
import mx.controls.Button;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import mx.effects.Resize;
import mx.controls.Alert;
import mx.controls.Label;
[Event(name="restore")]
[Event(name="maximize")]
public class FlexPanel extends Panel{
private var state:int = 0;
private var restoreBtn: Button;
private var minBtn: Button;
private var closeBtn: Button;
[Embed("../assets/minICON.png")] // 这里我自定义了按钮外观
private var minIcon:Class;
[Embed("../assets/minOverICON.png")]
private var minOverIcon:Class;
[Embed("../assets/restoreICON.png")]
private var restoreIcon:Class;
[Embed("../assets/restoreOverICON.png")]
private var restoreOverIcon:Class;
[Embed("../assets/closeICON.png")]
private var closeIcon:Class;
[Embed("../assets/closeOverICON.png")]
private var closeOverIcon:Class;
private var resize: Resize;
private var effectTime: Number = 400;
private static var _instance: FlexPanel;
public function FlexPanel(){
super();
_instance = this;
}
public override function initialize():void{
super.initialize();
this.maxHeight = this.height;
initEffect();
}
private function setState(state:int):void{
this.state=state;
if (state==0){
this.dispatchEvent(new Event('restore'));
} else {
this.dispatchEvent(new Event('maximize'));
}
}
/* ************************************************* */
protected override function createChildren(): void {
super.createChildren();
this.titleBar.addEventListener(MouseEvent.MOUSE_DOWN, doDrag);
this.titleBar.addEventListener(MouseEvent.MOUSE_UP, doDrop);
restoreBtn = new Button();
restoreBtn.addEventListener("click",doRestore);
restoreBtn.setStyle("overIcon",restoreOverIcon);
restoreBtn.setStyle("downIcon",restoreIcon);
restoreBtn.setStyle("upIcon",restoreIcon);
restoreBtn.visible=false;
rawChildren.addChild(restoreBtn);
minBtn = new Button();
minBtn.addEventListener("click",doMin);
minBtn.setStyle("overIcon",minOverIcon);
minBtn.setStyle("downIcon",minIcon);
minBtn.setStyle("upIcon",minIcon);
minBtn.visible = true;
rawChildren.addChild(minBtn);
closeBtn = new Button();
closeBtn.addEventListener("click",doClose);
closeBtn.setStyle("overIcon",closeOverIcon);
closeBtn.setStyle("downIcon",closeIcon);
closeBtn.setStyle("upIcon",closeIcon);
closeBtn.visible = true;
rawChildren.addChild(closeBtn);
}
/* ************************************************** */
protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
private function doMin(event:Event):void{
setState(1);
minBtn.visible= false;
restoreBtn.visible= true;
minEffect();
//Alert.show(this.verticalScrollBar.toString());
}
private function doRestore(event:Event) :void{
setState(0);
minBtn.visible= true;
restoreBtn.visible= false;
restoreEffect();
}
private function doClose(event:Event) :void{
this.visible = false;
this.parent.removeChild(this);
}
private function doDrag(event:Event):void{
this.startDrag();
}
private function doDrop(event:Event):void{
this.stopDrag();
}
/* ********************************************************************************* */
protected override function layoutChrome(unscaledWidth: Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth, unscaledHeight);
var margin:int = 0;
var pixelsFromTop:int = 6;
var pixelsFromRight:int = 12;
var buttonWidth:int = 18;
var buttonHeight:int = 17;
var distance:int = 7;
var x:Number = this.width - buttonWidth*2 - distance - pixelsFromRight;
var y:Number = pixelsFromTop;
restoreBtn.setActualSize(buttonWidth, buttonHeight);
restoreBtn.move(x,y);
minBtn.setActualSize(buttonWidth, buttonHeight);
minBtn.move(x,y);
closeBtn.setActualSize(buttonWidth, buttonHeight);
closeBtn.move(this.width - buttonWidth - pixelsFromRight,y);
}
/* ********************************************************************************* */
private function initEffect():void{
resize = new Resize(_instance);
resize.heightTo = this.titleBar.height;
resize.duration = effectTime;
}
private function minEffect():void{
resize.heightTo = this.titleBar.height;
resize.end();
resize.play();
}
private function restoreEffect():void{
resize.heightTo = this.maxHeight;
resize.end();
resize.play();
}
}
}
发表评论
-
flex 自定义多个命名空间以及标签名
2013-01-22 15:21 1266flex 自定义多个命名空 ... -
FLEX中使用AS动态创建DataGrid
2013-01-09 16:24 883FLEX中使用AS动态创建DataGrid 2010年2月6日 ... -
flex与flash之间相互调用
2012-12-12 12:39 610http://www.cnblogs.com/kaixuan/ ... -
Flex与Flex创建的swf通信
2012-12-12 10:16 703加载子SWF的Flex程序代码 <?xml vers ... -
[AS3]加载视频(FLV)文件
2012-12-06 15:11 847[AS3]加载视频(FLV)文件 分类: FLEX/CS3-- ... -
通过FileReference打开本地图片崩溃的解决方法
2012-12-06 14:02 704通过FileReference打开本地图片崩溃的解决方法 最近 ... -
使用FileReference的load()方法加载本地图片
2012-12-06 13:56 8951、要想使用FileReference的load()方法和da ... -
[AS3]Bitmap序列化(将BitmapData保存为原生Binary/ByteArray)
2012-12-06 13:48 748[AS3]Bitmap序列化(将BitmapData保存为原生 ... -
as3 画五角星算法
2012-12-05 16:49 2594as3 画五角星算法 阅读:10次 时间:2012-03- ... -
flex嵌入完整html
2012-11-29 11:18 797有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex4 textArea的htmlText属性
2012-11-29 11:13 3097它现在包含Text布局框架(Text Layout Frame ... -
Tooltip应用
2012-11-29 11:11 699创建ToolTip: var errorToolTip:To ... -
数据绑定显示问题
2012-10-27 12:11 629数据绑定实时变化。 XMLListCollection 可以变 ... -
待解决问题
2012-09-18 23:48 6891.仪表盘 2.渐变填充的使用 3.发光效果的完美运用 能在一 ... -
as3加载外部图片的两种方式
2012-09-09 11:46 985package net.burchin.loading { ... -
公式as3
2012-09-06 18:13 0as3 1人收藏此文章, 我要收藏 发表于1年前(2011-0 ... -
Flex中多线程的实现
2012-09-06 10:49 3465破阵子_如是我闻 如是我闻。一时佛在舍卫国,祗树给孤独园.. ... -
自定义column renderer
2012-08-09 15:07 894<?xml version="1.0" ... -
drowshadowFilter
2012-08-09 15:05 648DropShadowFilter 类,在Flash中为各种对象 ... -
123123
2012-08-08 17:16 0http://www.oschina.net/code/sni ...
相关推荐
MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...
Flex:事件的流转控制,此文档详细描述了事件的流转机制
@ twilio-labs / plugin-flex Twilio CLI插件可与进行交互该插件为添加了功能,以便在本地开发,构建和部署;...指令 twilio flex:plugins:start twilio flex:plugins:build 构建您的Flex插件,并创建
Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版 --新增功能:重新设计表达式解析引擎,支持更多函数,运算符,支持运算符函数递归嵌套 --新增功能:重新设计表达式编辑器 --新增功能:新增字体颜色设置...
NULL 博文链接:https://xaajie.iteye.com/blog/379054
Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版 release 2.3.6.0 --新增功能:报表编辑器支持打开/报表本地文件功能 --新增功能:单元格垂直合并 --新增功能:报表编辑器,标题行支持单个和多个单元格...
flex自定义桌面panel,可放大缩小,不会超出桌面大小
Flex:Web报表引擎+Web报表编辑器——MyReport 1.2.0.1 New:1.2版本支持一维码(Code128B)显示,表头、表脚支持多联标题。详情:http://blog.csdn.net/hunkcai/archive/2010/05/29/5633838.aspx 最新版2.0.0.0支持...
Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写等功能,满足中国式报表的常见功能需求。 最新版1.2.0.1下载地址:...
在FLEX 里,解决FLEX 占用内存一直不减,无法清除的问题
flex 特效拖动Panel变Window
Flex_3_与_Flex_4_之间的区别
Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写等功能,满足中国式报表的常见功能需求。 最新版2.0.0.0支持Adobe Flash Builder 4,Flex SDK 4.1。 ...
写编译器时很有用的软件。这个是支持windows的版本
flex三种实现滚动条方式,其实是两种,样式的以两种表现形式写出了。然后,自定了一个滚动条
Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表设计用户体现,可视化编辑...
Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写,一维码显示, 图片显示等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表...
Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写, 一维码显示等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表设计用户...
NULL 博文链接:https://hcty31.iteye.com/blog/1122729
很简单,可以直接用。不能动的panel现在可以动起来了。