ActionScript 3.0 類結構探討筆記: Point類

來源:互聯網
上載者:User

    ActionScript 3 當中有一個幾何 類庫集,這個類庫包有一個Point類。

   Point 對象表示二維座標系統中的某個位置,其中 x 表示水平軸,y 表示垂直軸。 下面看看裡面的方法,嘗試寫一下裡面的結構是怎樣的

 package<br />{<br />public class Point2D extends Object<br />{<br />public var x:Number;<br />public var y:Number;<br />private var Length:Number;<br />public function Point2D(x:Number=0,y:Number=0)</p><p>public function get length():Number</p><p>//將另一個點的座標添加到此點的座標以建立一個新點<br />public function add(v:Point2D):Point2D</p><p>//建立此 Point 對象的副本<br />public function clone():Point2D</p><p>//返回 pt1 和 pt2 之間的距離。<br />public static function distance(pt1:Point2D,pt2:Point2D):Number</p><p>//確定兩個點是否相同<br />public function equals(toCompare:Point2D):Boolean</p><p> //確定兩個指定點之間的點<br />public static function interpolate(pt1:Point2D,pt2:Point2D,f:Number):Point2D</p><p>//將 (0,0) 和當前點之間的線段縮放為設定的長度(利用三角形相似可以得到)。<br />public function normalize(thickness:Number):void</p><p>//按指定量位移 Point 對象。<br />public function offset(dx:Number,dy:Number):void</p><p>//將一對極座標轉換為笛卡爾點座標。<br />public static function polar(len:Number,angle:Number):Point2D</p><p>//從此點的座標中減去另一個點的座標以建立一個新點<br />public function subtract(v:Point2D):Point2D</p><p>//返回包含 x 和 y 座標的值的字串<br />public function toString():String</p><p>}<br />}

 

 

大概結構是這樣,下面就寫一個和Point有相同功能的 Point2D類,下面把裡面的方法大概猜測寫一下,以便瞭解裡面的結構。

 

有興趣可以測試一下!基本上的功能都能夠實現到。

 

有趣的是,我們發現這種寫法,也是在as3 當中一個比較常見和常用的設計手法,可以寫一個複數類,藉助這個Point類寫法,

實現複數的四則運算功能。

 

Point 類描述的是數學上一個座標系(x,y)在個點當中,可以進行運算Point對象就是封裝記錄幾何座標系當中的點。

 

 

 package<br />{<br />public class Point2D extends Object<br />{<br />public var x:Number;<br />public var y:Number;<br />private var Length:Number;<br />public function Point2D(x:Number=0,y:Number=0)<br />{<br />this.x=x;<br />this.y=y;<br />}<br />public function get length():Number<br />{<br />Length=Point2D.distance(new Point2D(0,0),new Point2D(this.x,this.y));<br />return Length;<br />}</p><p>//將另一個點的座標添加到此點的座標以建立一個新點<br />public function add(v:Point2D):Point2D<br />{<br />var px:Number=this.x + v.x;<br />var py:Number=this.y + v.y;<br />return new Point2D(px,py);<br />}</p><p>//建立此 Point 對象的副本<br />public function clone():Point2D<br />{<br />return new Point2D(this.x,this.y);<br />}<br />//返回 pt1 和 pt2 之間的距離。<br />public static function distance(pt1:Point2D,pt2:Point2D):Number<br />{<br />return Math.sqrt((pt1.x - pt2.x )* (pt1.x - pt2.x) + (pt1.y - pt2.y) * (pt1.y - pt2.y));<br />}</p><p>//確定兩個點是否相同<br />public function equals(toCompare:Point2D):Boolean<br />{<br /> return (this.x==toCompare.x && this.y==toCompare.y )?true:false;<br />}</p><p> //確定兩個指定點之間的點<br />public static function interpolate(pt1:Point2D,pt2:Point2D,f:Number):Point2D<br />{<br />var point:Point2D=new Point2D();<br />point.x= (pt2.x-pt1.x)*f;<br />point.y= (pt2.y-pt1.y)*f;<br />return point;<br />}</p><p>//將 (0,0) 和當前點之間的線段縮放為設定的長度(利用三角形相似可以得到)。<br />public function normalize(thickness:Number):void<br />{<br />var norm:Number = this.length/thickness;<br />if( norm == 0 || norm == 1) return;<br />x /= norm;<br />y /= norm;<br />}</p><p>//按指定量位移 Point 對象。<br />public function offset(dx:Number,dy:Number):void<br />{<br />this.x+= dx;<br />this.y+= dy;<br />}</p><p>//將一對極座標轉換為笛卡爾點座標。<br />public static function polar(len:Number,angle:Number):Point2D<br />{<br />var px:Number=len * Math.cos(angle);<br />var py:Number=len * Math.sin(angle);<br />return new Point2D(px,py);<br />}</p><p>//從此點的座標中減去另一個點的座標以建立一個新點<br />public function subtract(v:Point2D):Point2D<br />{<br />var px:Number=this.x - v.x;<br />var py:Number=this.y - v.y;<br />return new Point2D(px,py);<br />}</p><p>//返回包含 x 和 y 座標的值的字串<br />public function toString():String<br />{<br />return "(x=" + x + ", y=" + y + ")";<br />}<br />}<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.