- 相關(guān)推薦
java“類的分包處理”詳細(xì)教程
ActionScript 3.0 自寫類整理筆記(一)——類的分包處理
分包情況:
base包:基礎(chǔ)包,用于存放初級(jí)應(yīng)用類
bat包:應(yīng)用包,用于存放高級(jí)應(yīng)用類
com包:系統(tǒng)化包,用于存放系統(tǒng)化的高級(jí)應(yīng)用模塊類
exe包:框架包,用于存放框架方面的類
item包:項(xiàng)目包,用于項(xiàng)目上靠經(jīng)驗(yàn)積累下的類
module包:組件包,用于存放組件的類
這段時(shí)間,我個(gè)人的情緒非常低落,為了擺脫這段時(shí)間的消極狀態(tài)
因此開(kāi)始整理在做項(xiàng)目中,碰到的種種問(wèn)題,來(lái)整理出一套可用性高的類庫(kù)
希望自己會(huì)堅(jiān)持下去!
ActionScript 3.0 自寫類整理筆記(二)——Dot類
index.base.geom.Dot類講解
基本功能:記錄xy兩點(diǎn)
構(gòu)造函數(shù)
public function Dot(x_:Number = 0,y_:Number = 0,_isListen:Boolean = false)
前兩個(gè)參數(shù)表示Dot的初始位置,第三個(gè)參數(shù)表示是否是一個(gè)功能性強(qiáng)的點(diǎn)
如果為false,當(dāng)xy發(fā)生改變的時(shí)候,就不會(huì)發(fā)布事件,為true則會(huì)發(fā)布事件、
bind 綁定顯示對(duì)象方法
public function bind(_dis:DisplayObject,isInTime:Boolean = false):void
當(dāng)Dot綁定到DisplayObject上之后,Dot的xy屬性會(huì)隨著_dis改變而改變
第一個(gè)參數(shù)為綁定的對(duì)象,第二個(gè)參數(shù)表示是否即時(shí)綁定
如果為false,Dot的xy屬性不會(huì)隨著_dis的改變而即時(shí)改變,但在獲取Dot的xy屬性,或者調(diào)用Dot的方法時(shí),將會(huì)立即改變并且以_dis的xy屬性為基準(zhǔn)
如果為true,Dot的xy屬性會(huì)隨著_dis的改變而立即改變,如果isListen為true,還會(huì)即時(shí)發(fā)布xy改變的事件,那么等于可以偵聽(tīng)顯示對(duì)象的xy屬性,并且在改變后做出即時(shí)的反應(yīng)
updata 刷新方法
public function updata():void
更新顯示對(duì)象與Dot的xy屬性
from 返回兩點(diǎn)之間距離
public function from(_dot:Dot,isQuadrant:Boolean = false):Number
第一個(gè)參數(shù)表示,結(jié)束點(diǎn),第二個(gè)參數(shù)表示,是否為真實(shí)距離
如果為false,返回的兩點(diǎn)距離絕對(duì)是正數(shù),指的是兩點(diǎn)之間的絕對(duì)距離
如果為true,則返回相對(duì)坐標(biāo),那么是有可能的為負(fù)的!
angle 返回兩點(diǎn)所形成的夾角
public function angle(_dot:Dot,isRadian:Boolean = false):Number
第一個(gè)參數(shù)表示,另外一個(gè)點(diǎn),第二個(gè)參數(shù)表示,是否為弧度值
返回的角度是相對(duì)順時(shí)間的真實(shí)角度值,具體的數(shù)值變化可以從上面的例子看出
quadrant 返回相對(duì)點(diǎn)所在的象限
public function quadrant(_dot:Dot,isMaster:Boolean = true):int
第一個(gè)參數(shù)表示另外一個(gè)點(diǎn),第二個(gè)參數(shù)表示是否以該點(diǎn)為標(biāo)準(zhǔn),具體請(qǐng)看示例
返回0,表示兩點(diǎn)在同一條橫著或者豎著的直線上
返回1,表示在第一象限,返回2表示第二象限………… 最高是第四象限。。
不知道象限是什么意思的,請(qǐng)看這 點(diǎn)擊跳轉(zhuǎn)"象限"的百度百科頁(yè)面
clear 方法
public function clear():void
清空顯示對(duì)象
length 屬性(只讀)
public function get length():Number
獲取該點(diǎn)距0,0點(diǎn)的距離
x 屬性
public function set x(num:Number):void
public function get x():Number
設(shè)置x屬性,如果isListen為true,則會(huì)發(fā)布x改變的事件
y 屬性
public function set y(num:Number):void
public function get y():Number
設(shè)置y屬性,如果isListen為true,則會(huì)發(fā)布y改變的事件
isListener 屬性
public var isListen:Boolean
指定設(shè)置isListen的值,是否為可偵聽(tīng)xy
舉例:
上面的flash展示源代碼:
import index.base.geom.Dot;
import index.base.events.DotEvent;
var po1:Dot = new Dot(0,0,true);
var po2:Dot = new Dot(0,0,true);
po1.bind(p1,true);
po2.bind(p2,true);
po1.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
po2.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
function dotChangeFun(e:DotEvent):void{
te.text = "物體1坐標(biāo):" po1.x "," po1.y;
te.appendText("n物體2坐標(biāo):" po2.x "," po2.y);
te.appendText("n兩點(diǎn)之間距離:" po1.from(po2));
te.appendText("n所形成的角度:" po1.angle(po2));
te.appendText("n物體1所在象限:" po1.quadrant(new Dot,false));
te.appendText("n物體2所在象限:" po2.quadrant(new Dot,false));
te.appendText("n物體1對(duì)于物體2在象限:" po2.quadrant(po1));
}
p1.addEventListener(MouseEvent.MOUSE_DOWN,p1MouseDownFun);
p2.addEventListener(MouseEvent.MOUSE_DOWN,p2MouseDownFun);
function p1MouseDownFun(e:MouseEvent):void{
p1.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
function p1MouseUpFun(e:MouseEvent):void{
p1.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
function p2MouseDownFun(e:MouseEvent):void{
p2.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}
function p2MouseUpFun(e:MouseEvent):void{
p2.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}
下面是類的源代碼:
package index.base.geom{
import flash.events.EventDispatcher;
import flash.display.DisplayObject;
import index.base.events.DotEvent;
public class Dot extends EventDispatcher{
private var _x:Number;
private var _y:Number;
private var dis:DisplayObject;
public var isListen:Boolean;
public function Dot(x_:Number = 0,y_:Number = 0,_isListen:Boolean = false){
_x = x_;
_y = y_;
isListen = _isListen;
}
//綁定DisplayObject
public function bind(_dis:DisplayObject,isInTime:Boolean = false):void{
dis = _dis;
updata();
if(isInTime) dis.addEventListener("enterFrame",enterFrameFun);
}
//幀頻繁事件
private function enterFrameFun(e:Object):void{
if(_x != dis.x) x = dis.x;
if(_y != dis.y) y = dis.y;
}
//更新xy數(shù)據(jù)
public function updata():void{
if(dis != null){
_x = dis.x;
_y = dis.y;
}
}
//計(jì)算該點(diǎn)與另外一點(diǎn)的距離
public function from(_dot:Dot,isQuadrant:Boolean = false):Number{
updata();
var num:Number = Math.sqrt(Math.pow(_dot.x - _x,2) Math.pow(_dot.y - _y,2));
if(!isQuadrant) num = Math.abs(num);
return num;
}
//計(jì)算該點(diǎn)與另外一點(diǎn)所形成的線段與水平線的夾角,按順時(shí)間計(jì)算
public function angle(_dot:Dot,isRadian:Boolean = false):Number{
updata();
var numx:Number = _dot.x - _x;
var numy:Number = _dot.y - _y;
var num:Number = Math.atan(numy/numx);
if(!isRadian) num = num * 180 / Math.PI;
return num;
}
//返回當(dāng)前點(diǎn)處在另外一點(diǎn)的哪個(gè)象限中 或 返回另外一點(diǎn)處在當(dāng)前點(diǎn)的哪個(gè)象限中
public function quadrant(_dot:Dot,isMaster:Boolean = true):int{
updata();
if(_x == _dot.x || _y == _dot.y){
return 0;
}
var num:int;
var p1:Boolean = (_x - _dot.x) > 0;
var p2:Boolean = (_y - _dot.y) > 0;
num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));
return num;
}
//返回該點(diǎn)距0點(diǎn)的距離
public function get length():Number{
updata();
var num:Number = Math.sqrt(Math.pow(_x,2) Math.pow(_y,2));
return num;
}
//清除顯示對(duì)象
public function clear():void{
dis = null;
}
//改變X坐標(biāo)
public function set x(num:Number):void{
_x = num;
if(dis != null) dis.x = num;
if(isListen) dispatchEvent(new DotEvent(DotEvent.DOT_CHANGE,true));
}
//設(shè)置X坐標(biāo)
public function get x():Number{
updata();
return _x;
}
//改變Y坐標(biāo)
public function set y(num:Number):void{
_y = num;
if(dis != null) dis.y = num;
if(isListen) dispatchEvent(new DotEvent(DotEvent.DOT_CHANGE,true));
}
//設(shè)置Y坐標(biāo)
public function get y():Number{
updata();
return _y;
}
}
}
事件類的代碼:
package index.base.events{
import flash.events.Event;
public class DotEvent extends Event{
public static const DOT_CHANGE:String = "dotChange";
public function DotEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false){
super(type,bubbles,cancelable);
}
}
}
【java“類的分包處理”詳細(xì)教程】相關(guān)文章:
linux配置java環(huán)境變量詳細(xì)步驟教程08-13
關(guān)于Java類的定義以及執(zhí)行順序?qū)W習(xí)教程10-17
java教程之Java編程基礎(chǔ)09-12
Photoshop濾鏡詳細(xì)教程08-24
java selenium基本教程09-27
Java程序規(guī)范教程09-03
Java面向過(guò)程教程10-05