2011-10-15 30 views
1

我有一個組件(鏈接到Test類),其中包含一條線,我把這一行的一個點(0,0)。如何在AS3中獲取一條線的兩點?

然後將其拖動到Flash(FLA),並獲得其Shape在AS3像:

// in Test.as 
// assume that the movie clip only contain one line. 
var line:Shape = Shape(getChildAt(0)); 

,我可以得到這條線是x和VAR liney的一個點。但如何得到這一線的另一點?

編輯: 忽略組件的東西上面,這裏有一個問題,但我想它幾乎與上面相同的問題:

從(0,0)畫一條線,(10,10),並提請從(10,0)到(0,10)的另一行,如何在AS3中獲得這些兩點形式的行?

如果我訪問他們爲Shape然後我得到具有相同xywidthheight值的兩個相似的形狀。 AS3是否有某種方法可以將線路作爲REAL線路而不僅僅是一個形狀?或者它有什麼辦法可以計算出來?

+0

感謝您指出。我只是更新我的問題,希望它比以前更清晰。 :) – quabug

+0

「AS3是否有一些方法可以將線條作爲實線而不只是一個形狀?」 AS3中沒有Line類。你想用這條線做什麼?更改?移動它?這將有助於我們更好地理解正確的方法。 –

+0

我想用一條線作爲地圖的路徑,並將其放入一個鏈接到我的類的組件中,以便我可以輕鬆更改該路徑的重量和類型,並且還可以輕鬆更改其起點和目的地。 – quabug

回答

0

我得到了一個很好的方法來最終做到這一點。

這裏,我們去:

  1. 創建一個符號,繪製從原點的直線(0,0)到(x,0)
  2. 鏈接這個符號添加到您的源代碼,我們姑且稱之爲Line
  3. 將此符號拖放到舞臺上,並旋轉,如果需要可以縮放。
  4. 在代碼Line

    var v:Point = new Point(getBounds(this).right, 0); 
    v = localToGlobal(v); 
    

    然後(X,Y)和(V.X,V.Y)可以表示這條線。

0

AS3中的Shape類不用於包含組成形狀的點。相反,它可以創建一個圖形對象(不包含鼠標事件分派,不能包含顯示對象等)的最裸露的顯示對象。它的名字通常給人的印象更多,但事實並非如此。無論是通過繪圖調用表示的內容,都不能從形狀中訪問......或者通常不能從AS3中的任何顯示對象訪問。

寬度和高度x和y只是顯示對象屬性,它們基於它的邊界。如果你想表示個別點,你將不得不創建自己的點結構,最終習慣於使得繪圖調用以後可視化。

如果您最終存儲了點,然後讓每個形狀繪製它們,然後希望能夠縮放或平移各個形狀,並希望在座標空間中具有除本地形狀之外的點,則DisplayObject的localToGlobal和globalToLocal可能對你有用。

var local:Point = new Point(10, 10); 
var global:Point = someShape.localToGlobal(localPoint); 
var inNewCoord:Point = parentContainer.globalToLocal(globalPoint) 

如果你真的需要找到這個矢量數據......你可能要檢查這個帖子出來: http://wahlers.com.br/claus/blog/hacking-swf-1-shapes-in-flash/

但是這涉及到實際解析SWF的字節數據。

+0

」如果你想表現個人點,你將不得不創建自己的點結構,最終習慣於使繪製調用後來可視化「 這是我需要的一部分,你能描述更多的細節嗎?任何結構,我可以在Flash中繪製它,並仍然得到它(表示爲一條線)在AS3 – quabug

+0

當你說它在閃存中繪製它,你的意思是與閃存ide繪圖工具?如果是這樣,我相當有信心,你不會得到你想要的東西,即使你設法......你可能會更容易做出一個瑞士法郎允許你創建和刪除點繪製,並保存這些點格式最方便。如果你需要這個工具存在於編輯器中,你可能會在稍後將它變成一個組件。我可以要求提供更多關於你想要完成的事情嗎? –

+0

當然,我只是想用線作爲一些「可檢查」屬性的組件。然後,我可以使用它(和節點組件)在Flash(CS4)中組裝地圖以在AS3中尋路。作爲地圖的路徑數據,我需要以兩點形式訪問這些線。實際上有一個很髒的方法來做到這一點,在我反映的(通過使用Inspectable標籤)一個象限屬性,所以我可以計算兩個點的線。但我認爲這只是某種尷尬。 – quabug

相關問題