马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可以为受众提供跨计算机、智能手机、平板电脑和电视平台的令人痴迷的一致性体验。
ActionScript3.0自写类收拾条记(一)——类的分包处置
分包情形:
base包:基本包,用于寄存低级使用类
bat包:使用包,用于寄存初级使用类
com包:体系化包,用于寄存体系化的初级使用模块类
exe包:框架包,用于寄存框架方面的类
item包:项目包,用于项目上靠履历堆集下的类
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暗示第二象限…………最高是第四象限。。
不晓得象限是甚么意义的,请看这点击跳转"象限"的百度百科页面
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("
物体2坐标:"+po2.x+","+po2.y);
te.appendText("
两点之间间隔:"+po1.from(po2));
te.appendText("
所构成的角度:"+po1.angle(po2));
te.appendText("
物体1地点象限:"+po1.quadrant(newDot,false));
te.appendText("
物体2地点象限:"+po2.quadrant(newDot,false));
te.appendText("
物体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);
}
}
}
您是否有着精彩的Flash作品,您是否想把他转化为屏保程序。 |