2012-08-16 61 views
0

我試圖讓使用稍微3D精靈這種自上而下的遊戲。我希望能夠讓玩家在任何對象前面或後面行走。AS3 - 關於改變MC的深度到另一個

一樣,如果他是在另一對象後面有一定的距離,他會背後動,如果他更接近其他對象的面前,他會在它前面的移動。

有點像那些老街機遊戲,像憤怒的街道。

任何想法?

回答

0

每次玩家移動,你需要評估每個適用項目的y位置和排序Z順序childIndex基於開/關說。

所以,如果你所有的「對象」,以走在後面/盈方和你的性格是在一個父精靈叫前景:

function sortZ(){ 
    var arrayOfStuff:Vector<DisplayObject> = new Vector<DisplayObject>(); 

    var i:int; 
    for(i=0;i<foreground.numChildren;i++){ 
     arrayOfStuff.push(foreground.getChildAt(i)); 
    } 

    arrayOfStuff.sort(sortArrayByY); 

    for(i=0;i<arrayOfStuff.length;i++){ 
     foreground.setChildIndex(arrayOfStuff[i],i); 
    } 
} 

function sortArrayByY(valA:DisplayObject, valB:DisplayObject):int { 
    if(valA.y == valB.y) return 0; 
    if(valA.y > valB.y) return 1; 
    return -1; 
} 
+0

你能解釋一下這行對我說:「VAR arrayOfStuff:矢量<的DisplayObject> = new Vector ();「我之前從未使用過矢量函數,甚至沒有使用過「<>」,所以我不確定它是什麼意思。 – 2012-08-16 18:57:01

+0

矢量是一個類型數組。與數組完全相同,但每個元素都是指定類型,在這種情況下是displayObject。您可以輕鬆地將其更改爲var arrayOfStuff:Array = new Array(),其餘部分將工作。向量更好的表現是全部(幾乎在所有情況下) – BadFeelingAboutThis 2012-08-16 19:47:30