java类的分包处理详细教程.docx
《java类的分包处理详细教程.docx》由会员分享,可在线阅读,更多相关《java类的分包处理详细教程.docx(9页珍藏版)》请在冰豆网上搜索。
java类的分包处理详细教程
java“类的分包处理”详细教程
java“类的分包处理”详细教程
ActionScript3.0自写类整理笔记
(一)——类的分包处理
分包情况:
base包:
基础包,用于存放初级应用类
bat包:
应用包,用于存放高级应用类
com包:
系统化包,用于存放系统化的高级应用模块类
exe包:
框架包,用于存放框架方面的类
module包:
组件包,用于存放组件的类
这段时间,我个人的情绪非常低落,为了摆脱这段时间的消极状态
因此开始整理在做项目中,碰到的种种问题,来整理出一套可用性高的类库
希望自己会坚持下去!
ActionScript3.0自写类整理笔记
(二)——Dot类
index.base.geom.Dot类讲解
基本功能:
记录xy两点
构造函数
publicfunctionDot(x_:
Number=0,y_:
Number=0,_isListen:
Boolean=false)
前两个参数表示Dot的初始位置,第三个参数表示是否是一个功能性强的点
如果为false,当xy发生改变的时候,就不会发布事件,为true则会发布事件、
bind绑定显示对象方法
publicfunctionbind(_dis:
DisplayObject,isInTime:
Boolean=false):
void
当Dot绑定到DisplayObject上之后,Dot的xy属性会随着_dis改变而改变
第一个参数为绑定的对象,第二个参数表示是否即时绑定
如果为false,Dot的xy属性不会随着_dis的改变而即时改变,但在获取Dot的xy属性,或者调用Dot的方法时,将会立即改变并且以_dis的xy属性为基准
如果为true,Dot的xy属性会随着_dis的改变而立即改变,如果isListen为true,还会即时发布xy改变的事件,那么等于可以侦听显示对象的xy属性,并且在改变后做出即时的反应
updata刷新方法
publicfunctionupdata():
void
更新显示对象与Dot的xy属性
from返回两点之间距离
publicfunctionfrom(_dot:
Dot,isQuadrant:
Boolean=false):
Number
第一个参数表示,结束点,第二个参数表示,是否为真实距离
如果为false,返回的两点距离绝对是正数,指的是两点之间的绝对距离
如果为true,则返回相对坐标,那么是有可能的为负的!
angle返回两点所形成的夹角
publicfunctionangle(_dot:
Dot,isRadian:
Boolean=false):
Number
第一个参数表示,另外一个点,第二个参数表示,是否为弧度值
返回的角度是相对顺时间的真实角度值,具体的数值变化可以从上面的例子看出
quadrant返回相对点所在的象限
publicfunctionquadrant(_dot:
Dot,isMaster:
Boolean=true):
int
第一个参数表示另外一个点,第二个参数表示是否以该点为标准,具体请看示例
返回0,表示两点在同一条横着或者竖着的直线上
返回1,表示在第一象限,返回2表示第二象限…………最高是第四象限。
。
不知道象限是什么意思的.,请看这点击跳转"象限"的XX百科页面
clear方法
publicfunctionclear():
void
清空显示对象
length属性(只读)
publicfunctiongetlength():
Number
获取该点距0,0点的距离
x属性
publicfunctionsetx(num:
Number):
void
publicfunctiongetx():
Number
设置x属性,如果isListen为true,则会发布x改变的事件
y属性
publicfunctionsety(num:
Number):
void
publicfunctiongety():
Number
设置y属性,如果isListen为true,则会发布y改变的事件
isListener属性
publicvarisListen:
Boolean
指定设置isListen的值,是否为可侦听xy
举例:
上面的flash展示源代码:
importindex.base.geom.Dot;
importindex.base.events.DotEvent;
varpo1:
Dot=newDot(0,0,true);
varpo2:
Dot=newDot(0,0,true);
po1.bind(p1,true);
po2.bind(p2,true);
po1.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
po2.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
functiondotChangeFun(e:
DotEvent):
void{
te.text="物体1坐标:
"po1.x","po1.y;
te.appendText("n物体2坐标:
"po2.x","po2.y);
te.appendText("n两点之间距离:
"po1.from(po2));
te.appendText("n所形成的角度:
"po1.angle(po2));
te.appendText("n物体1所在象限:
"po1.quadrant(newDot,false));
te.appendText("n物体2所在象限:
"po2.quadrant(newDot,false));
te.appendText("n物体1对于物体2在象限:
"po2.quadrant(po1));
}
p1.addEventListener(MouseEvent.MOUSE_DOWN,p1MouseDownFun);
p2.addEventListener(MouseEvent.MOUSE_DOWN,p2MouseDownFun);
functionp1MouseDownFun(e:
MouseEvent):
void{
p1.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
functionp1MouseUpFun(e:
MouseEvent):
void{
p1.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
functionp2MouseDownFun(e:
MouseEvent):
void{
p2.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}
functionp2MouseUpFun(e:
MouseEvent):
void{
p2.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}
下面是类的源代码:
packageindex.base.geom{
importflash.events.EventDispatcher;
importflash.display.DisplayObject;
importindex.base.events.DotEvent;
publicclassDotextendsEventDispatcher{
privatevar_x:
Number;
privatevar_y:
Number;
privatevardis:
DisplayObject;
publicvarisListen:
Boolean;
publicfunctionDot(x_:
Number=0,y_:
Number=0,_isListen:
Boolean=false){
_x=x_;
_y=y_;
isListen=_isListen;
}
//绑定DisplayObject
publicfunctionbind(_dis:
DisplayObject,isInTime:
Boolean=false):
void{
dis=_dis;
updata();
if(isInTime)dis.addEventListener("enterFrame",enterFrameFun);
}
//帧频繁事件
privatefunctionenterFrameFun(e:
Object):
void{
if(_x!
=dis.x)x=dis.x;
if(_y!
=dis.y)y=dis.y;
}
//更新xy数据
publicfunctionupdata():
void{
if(dis!
=null){
_x=dis.x;
_y=dis.y;
}
}
//计算该点与另外一点的距离
publicfunctionfrom(_dot:
Dot,isQuadrant:
Boolean=false):
Number{
updata();
varnum:
Number=Math.sqrt(Math.pow(_dot.x-_x,2)Math.pow(_dot.y-_y,2));
if(!
isQuadrant)num=Math.abs(num);
returnnum;
}
//计算该点与另外一点所形成的线段与水平线的夹角,按顺时间计算
publicfunctionangle(_dot:
Dot,isRadian:
Boolean=false):
Number{
updata();
varnumx:
Number=_dot.x-_x;
varnumy:
Number=_dot.y-_y;
varnum:
Number=Math.atan(numy/numx);
if(!
isRadian)num=num*180/Math.PI;
returnnum;
}
//返回当前点处在另外一点的哪个象限中或返回另外一点处在当前点的哪个象限中
publicfunctionquadrant(_dot:
Dot,isMaster:
Boolean=true):
int{
updata();
if(_x==_dot.x||_y==_dot.y){
return0;
}
varnum:
int;
varp1:
Boolean=(_x-_dot.x)>0;
varp2:
Boolean=(_y-_dot.y)>0;
num=isMaster?
(p1?
(p2?
2:
3):
(p2?
1:
4)):
(p1?
(p2?
4:
1):
(p2?
3:
2));
returnnum;
}
//返回该点距0点的距离
publicfunctiongetlength():
Number{
updata();
varnum:
Number=Math.sqrt(Math.pow(_x,2)Math.pow(_y,2));
returnnum;
}
//清除显示对象
publicfunctionclear():
void{
dis=null;
}
//改变X坐标
publicfunctionsetx(num:
Number):
void{
_x=num;
if(dis!
=null)dis.x=num;
if(isListen)dispatchEvent(newDotEvent(DotEvent.DOT_CHANGE,true));
}
//设置X坐标
publicfunctiongetx():
Number{
updata();
return_x;
}
//改变Y坐标
publicfunctionsety(num:
Number):
void{
_y=num;
if(dis!
=null)dis.y=num;
if(isListen)dispatchEvent(newDotEvent(DotEvent.DOT_CHANGE,true));
}
//设置Y坐标
publicfunctiongety():
Number{
updata();
return_y;
}
}
}
事件类的代码:
packageindex.base.events{
importflash.events.Event;
publicclassDotEventextendsEvent{
publicstaticconstDOT_CHANGE:
String="dotChange";
publicfunctionDotEvent(type:
String,bubbles:
Boolean=false,cancelable:
Boolean=false){
super(type,bubbles,cancelable);
}
}
}