8 2 5 例項分析

2021-04-16 21:32:11 字數 1840 閱讀 9667

下面對以上**作簡要說明:

(1)按照常規步驟建立並拷貝

matrix_rect

的matrx

,var mymatrix:matrix=matrix_rect.transform.matrix;

此處應該注意大小寫,

transform

內部並不存在

matrix

物件。matrix

是矩陣類的名字,

matrix

是例項的名字。在

as3中,這樣的情況俯拾皆是,一定要小心。

在編寫**時,一定要注意類的繼承關係。假如使用了

object

物件來宣告

mymatrix

,編譯時並不會報錯,但是在隨後執行將提示型別不匹配錯誤。

(2)建立好自定義矩陣物件之後,**需要計算

matrix_rect

的中心點座標,並將其移動到座標系原點:

var tempx

,tempy;

tempx=matrix_rect.x+matrix_rect.width/2;//

計算中心點x座標

tempy=matrix_rect.y+matrix_rect.height/2;//

計算中心點y座標

mymatrix.translate(-tempx

,-tempy);

此時的情形可參考圖:

(3)使用mymatrix.rotate()

方法將物件逆時針旋轉

45度。由於該方法的引數為弧度,所以**中進行了簡單數學轉換。因為

matrix_rect

的中心點已經移動到了座標原點,所以這次旋轉圍繞物件的中心進行。圖

演示的就是此時的情形。

(4)再次使用

matrix

類的translate()

方法把旋轉過的

matrix

移動到原來的位置。得到最終效果。

實際上,到這裡為止**並沒有影響

matrix_rect

及其顯示,所有的移動和旋轉都是對

mymatrix

進行的操作,得到的是乙個轉換運算矩陣。圖

8-6和圖

8-7是為了形象說明每條語句的作用而作的演示示例,並不會出現在舞台上。只有經過最後一句用

mymatrix

矩陣替換

matrix_rect

的內部矩陣物件之後,這些操作才真正作用到

matrix_rect

顯示物件上,並將最終結果(如圖

8-5)

顯示在舞台上。終端使用者只會看到居於舞台**的矩形圍繞中心旋轉了

45度。

屬性transform

中的成員都是唯讀的。所以

matrix

也不例外,可以更換但是不可以修改。在**中不能直接對

matrix_rect.transform.matrix

進行操作。如果嘗試以下**,編譯器將會顯示一條錯誤。

matrix_rect.transform.matrix.translate(-tempx

,-tempy);//

錯誤**

必須將transform

內部的物件或者

transform

物件本身拷貝到乙個副本裡,並對副本進行操作,然後用副本替換顯示物件的內部物件。這種用法容易引起困惑。可以理解

matrix

物件為乙個固化的機械零件,可以仿製並對仿製品進行改進,也可以用仿製的零件替換,但其本身不能拆解。

82 5 監控程序

列出某個程式程序所開啟的檔案資訊,顯示httpd程序現在開啟的檔案 lsof c httpd顯示多個程序命令用法 root netkiller lsof c smbd command pid user fd type device size off node name smbd 2506 root ...

CV大神講座感悟8 25

部落格做筆記,可以以後來翻看。這樣就留下了自己學習的記錄了,可能剛開始很簡單但是慢慢來逐漸積累自己的。遇到乙個問題怎麼解決 看書遇到問題就上網搜,谷歌 大神只是看書來培養起來。建議先看西瓜書,然後再看統計學習方法。實在看不懂,就看網路的 建議使用linux系統 資料收集的學習 網路選擇,是手機移動端...

825 適齡的朋友(字典)

1.問題描述 人們會互相傳送好友請求,現在給定乙個包含有他們年齡的陣列,ages i 表示第 i 個人的年齡。當滿足以下任一條件時,a 不能給 b a b不為同一人 傳送好友請求 age b 0.5 age a 7 age b age a age b 100 age a 100 否則,a 可以給 b...