分享
 
 
 

ResizableWindow源码

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

//****************************************************************************

// 版权及最终解释权归AOL所有

// 大小可以由鼠标拖动的Window组件

// 由mx.containers.Window类继承

//****************************************************************************

import mx.containers.Window;

import mx.controls.SimpleButton;

import mx.events.EventDispatcher;

[IconFile("ResizableWindowIcon.png")]

class ResizableWindow extends Window

{

static var symbolName:String = "ResizableWindow";

static var symbolOwner:Object = Object(ResizableWindow);

static var version:String = "0.01";

// private var _maxwidth:Number;

// private var _maxheight:Number;

// private var _minwidth:Number;

// private var _minheight:Number;

// private var _rangewidth:Number;

// private var _rangeheight:Number;

/* 当前类参数

* 及当前类+父类参数组合

*/

var clipParameters:Object ={ //maxWidth:1, maxHeight:1, minWidth:1, minHeight:1

};

static var mergedClipParameters:Boolean = UIObject.mergeClipParameters(

mx.containers.Window.prototype.clipParameters,

ResizableWindow.prototype.clipParameters);

/*

* 拖动按钮

*/

private var handle:SimpleButton;

/*

* 鼠标原位置

*/

private var _oldx:Number;

private var _oldy:Number;

/*

* 可控大小窗口按钮的皮肤

*/

[Inspectable(verbose=1, category="Skins")]

var skinResize:String = "ResizeButton";

// /*

// * 可控大小窗口的最大宽度

// */

// [Inspectable (name="ResizableWindow Maximal Width" defaultValue=550 type="Number", category="Values")]

// public function set maxWidth(val:Number):Void

// {

// _maxwidth = val;

// _rangewidth = _maxwidth - _minwidth;

// }

// public function get maxWidth():Number

// {

// return _maxwidth;

// }

// /*

// * 可控大小窗口的最小宽度

// */

// [Inspectable (name="ResizableWindow Minimum Width" defaultValue=20 type="Number", category="Values")]

// public function set minWidth(val:Number):Void

// {

// _minwidth = val;

// _rangewidth = _maxwidth - _minwidth;

// }

// public function get minWidth():Number

// {

// return _minwidth;

// }

// /*

// * 可控大小窗口的最大高度

// */

// [Inspectable (name="ResizableWindow Maximal Height" defaultValue=400 type="Number", category="Values")]

// public function set maxHeight(val:Number):Void

// {

// _maxheight= val;

// _rangeheight= _maxheight - _minheight;

// }

// public function get maxHeight():Number

// {

// return _maxheight;

// }

// /*

// * 可控大小窗口的最小高度

// */

// [Inspectable (name="ResizableWindow Minimum Height" defaultValue=40 type="Number", category="Values")]

// public function set minHeight(val:Number):Void

// {

// _minheight = val;

// _rangeheight = _maxheight - _minheight;

// }

// public function get minHeight():Number

// {

// return _minheight;

// }

/*

* 构造函数

*/

function MyComponent()

{

}

/* 方法

* 初始化组件

*/

function init(Void):Void

{

super.init();

}

/* 方法

* 改变组件大小

*/

function size(Void):Void

{

super.size();

// handle.setSize();

}

/*

* 建立组件的子项

* ResizableWindow组件有一个子项要建立

* 那就是使得Window可以变化的一个按钮

*/

private function createChildren(Void):Void

{

super.createChildren();

var resizeObj:Object = new Object();

resizeObj.falseUpSkin = skinResize;

resizeObj.falseOverSkin = skinResize;

resizeObj.falseDownSkin = skinResize;

handle = createClassObject(SimpleButton, "handle", 100,resizeObj);

handle.tabEnabled = false;

handle.onPress = startResize;

handle.onRelease = stopResize;

handle.onReleaseOutside = stopResize;

}

/*

* 布局

* 布置可控窗口大小按钮的位置

*/

private function doLayout(Void):Void

{

super.doLayout();

handle.move(width-handle.width, height-handle.height);

}

/*

* 事件处理方法

* 当按钮被按下,窗口的大小开始随着变化

*/

private function startResize(Void):Void

{

// trace("start");

this.useHandCursor=true;

this._parent._oldx=this._parent._xmouse;

this._parent._oldy=this._parent._ymouse;

this._parent.onMouseMove = this._parent.resize;

}

/*

* 事件处理方法

* 当按钮被拖动,窗口的大小变化

*/

private function resize(Void):Void

{

// trace("resize");

var dx = _xmouse - _oldx;

var dy = _ymouse - _oldy;

if((widthminWidth && heightminHeight ) || (dx0 && dy0))

setSize(width +dx, height +dy);

_oldx=_xmouse;

_oldy=_ymouse;

}

/*

* 事件处理方法

* 当按钮被释放,窗口的大小变化停止

*/

private function stopResize(Void):Void

{

this.useHandCursor=false;

delete this._parent.onMouseMove;

this._parent.releaseFocus();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有