java“類的分包處理”詳細教程

ActionScript 3.0 自寫類整理筆記(一)——類的分包處理

java“類的分包處理”詳細教程

分包情況:

base包:基礎包,用於存放初級應用類

bat包:應用包,用於存放高級應用類

com包:系統化包,用於存放系統化的高級應用模塊類

exe包:框架包,用於存放框架方面的類

item包:項目包,用於項目上靠經驗積累下的類

module包:組件包,用於存放組件的類

這段時間,我個人的情緒非常低落,爲了擺脫這段時間的消極狀態

因此開始整理在做項目中,碰到的種種問題,來整理出一套可用性高的類庫

希望自己會堅持下去!

ActionScript 3.0 自寫類整理筆記(二)——Dot類

講解

基本功能:記錄xy兩點

構造函數

public function Dot(x_:Number = 0,y_:Number = 0,_isListen:Boolean = false)

前兩個參數表示Dot的初始位置,第三個參數表示是否是一個功能性強的點

如果爲false,當xy發生改變的時候,就不會發布事件,爲true則會發布事件、

bind 綁定顯示對象方法

public function bind(_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 刷新方法

public function updata():void

更新顯示對象與Dot的xy屬性

from 返回兩點之間距離

public function from(_dot:Dot,isQuadrant:Boolean = false):Number

第一個參數表示,結束點,第二個參數表示,是否爲真實距離

如果爲false,返回的兩點距離絕對是正數,指的是兩點之間的絕對距離

如果爲true,則返回相對座標,那麼是有可能的爲負的!

angle 返回兩點所形成的夾角

public function angle(_dot:Dot,isRadian:Boolean = false):Number

第一個參數表示,另外一個點,第二個參數表示,是否爲弧度值

返回的角度是相對順時間的真實角度值,具體的數值變化可以從上面的例子看出

quadrant 返回相對點所在的象限

public function quadrant(_dot:Dot,isMaster:Boolean = true):int

第一個參數表示另外一個點,第二個參數表示是否以該點爲標準,具體請看示例

返回0,表示兩點在同一條橫着或者豎着的直線上

返回1,表示在第一象限,返回2表示第二象限………… 最高是第四象限。。

不知道象限是什麼意思的.,請看這 點擊跳轉"象限"的百度百科頁面

clear 方法

public function clear():void

清空顯示對象

length 屬性(只讀)

public function get length():Number

獲取該點距0,0點的距離

x 屬性

public function set x(num:Number):void

public function get x():Number

設置x屬性,如果isListen爲true,則會發布x改變的事件

y 屬性

public function set y(num:Number):void

public function get y():Number

設置y屬性,如果isListen爲true,則會發布y改變的事件

isListener 屬性

public var isListen:Boolean

指定設置isListen的值,是否爲可偵聽xy

舉例:

上面的flash展示源代碼:

import ;

import vent;

var po1:Dot = new Dot(0,0,true);

var po2:Dot = new Dot(0,0,true);

(p1,true);

(p2,true);

ventListener(_CHANGE,dotChangeFun);

ventListener(_CHANGE,dotChangeFun);

function dotChangeFun(e:DotEvent):void{

= "物體1座標:" po1.x "," po1.y;

ndText("n物體2座標:" po2.x "," po2.y);

ndText("n兩點之間距離:" (po2));

ndText("n所形成的角度:" e(po2));

ndText("n物體1所在象限:" rant(new Dot,false));

ndText("n物體2所在象限:" rant(new Dot,false));

ndText("n物體1對於物體2在象限:" rant(po1));

}

ventListener(E_DOWN,p1MouseDownFun);

ventListener(E_DOWN,p2MouseDownFun);

function p1MouseDownFun(e:MouseEvent):void{

tDrag();

ventListener(E_UP,p1MouseUpFun);

}

function p1MouseUpFun(e:MouseEvent):void{

Drag();

veEventListener(E_UP,p1MouseUpFun);

}

function p2MouseDownFun(e:MouseEvent):void{

tDrag();

ventListener(E_UP,p2MouseUpFun);

}

function p2MouseUpFun(e:MouseEvent):void{

Drag();

veEventListener(E_UP,p2MouseUpFun);

}

下面是類的源代碼:

package {

import tDispatcher;

import layObject;

import vent;

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) ventListener("enterFrame",enterFrameFun);

}

//幀頻繁事件

private function enterFrameFun(e:Object):void{

if(_x != dis.x) x = dis.x;

if(_y != dis.y) y = dis.y;

}

//更新xy數據

public function updata():void{

if(dis != null){

_x = dis.x;

_y = dis.y;

}

}

//計算該點與另外一點的距離

public function from(_dot:Dot,isQuadrant:Boolean = false):Number{

updata();

var num:Number = ((_dot.x - _x,2) (_dot.y - _y,2));

if(!isQuadrant) num = (num);

return num;

}

//計算該點與另外一點所形成的線段與水平線的夾角,按順時間計算

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 = (numy/numx);

if(!isRadian) num = num * 180 / ;

return num;

}

//返回當前點處在另外一點的哪個象限中 或 返回另外一點處在當前點的哪個象限中

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;

}

//返回該點距0點的距離

public function get length():Number{

updata();

var num:Number = ((_x,2) (_y,2));

return num;

}

//清除顯示對象

public function clear():void{

dis = null;

}

//改變X座標

public function set x(num:Number):void{

_x = num;

if(dis != null) dis.x = num;

if(isListen) dispatchEvent(new DotEvent(_CHANGE,true));

}

//設置X座標

public function get x():Number{

updata();

return _x;

}

//改變Y座標

public function set y(num:Number):void{

_y = num;

if(dis != null) dis.y = num;

if(isListen) dispatchEvent(new DotEvent(_CHANGE,true));

}

//設置Y座標

public function get y():Number{

updata();

return _y;

}

}

}

事件類的代碼:

package ts{

import t;

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);

}

}

}