2013-03-20 41 views
0

當我在我的場景的第一幀中的主代碼中,我可以訪問player.x和y屬性,但是從Enemy.as類我只能在構造中發送一次參數,但是我不知道如何不斷地更新循環中的那些座標。 xb和yb是我在每次在場景中創建Enemy對象時作爲參數發送的場景中我的播放器對象的座標,但此方法只給出一次座標。我想更新每個循環播放器對象的座標,我該怎麼做?我試過這行:trace(「this.parent.player.x」),但它不起作用。如何從公共類訪問場景中的對象Myclass擴展MovieClip?

public function Enemy(xLocation:int, yLocation:int, xb, yb) { 
     // constructor code 
     x = xLocation; 
     y = yLocation; 
     addEventListener(Event.ENTER_FRAME, loop); 
     xa = xb; 
     ya = yb; 
    } 

    public function loop(e:Event):void { 

      x -= xSpeedConst; 
      trace(this.x); 
      trace (xa + " " + ya); 

    } 

任何幫助將不勝感激......

回答

0

只是通過您的播放器實例到敵人,而不是座標,然後保存敵人例如內部實例:

public class Enemy{ 
    private var player:Player; 

    public function Enemy(xLocation:int, yLocation:int, playerParam){ 
    player = playerParam; 
    } 
} 

現在在你的循環中,你應該可以通過說:player.x或player.y來訪問玩家更新的x和y值。

+0

謝謝你,我的問題現在已經解決了 – 2013-03-20 09:48:07

+0

太棒了!既然你的問題解決了,你會介意選擇一個答案作爲最佳答案嗎? – Snukus 2013-03-20 10:16:01

0

這種問題有幾種方法。我最喜歡的一個就是創建一個管理類,它將包含其中的所有對象,無論是作爲兒童還是其他結構,數組等。然後,您想要了解其他實例的類將獲得管理類的鏈接(或者將其作爲this.parent獲取,但這更容易出錯),並調用其接口來獲取所需的任何信息。例如,一個Tower類別可以射擊怪物,要求經理級別讓怪物在其範圍內選擇目標,或者尋找玩家。