2012-08-16 70 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