2015-11-11 71 views
0

如果我在遊戲的主類中聲明舞臺'myStage',然後將其傳遞給我的播放器(它擴展了Actor)的構造函數。然後,我可以使用myStage副本將其他演員添加到主舞臺(即,在Player類中添加一些Bullet數組,甚至可以從Button類中的Buttons中添加一些按鈕)。Scene2d LibGDX Java - addActor(myactor)在其他類中工作嗎?

或者這是否會導致問題?因此,我必須僅從第一個實例中聲明舞臺的類中添加Actor()代碼?

回答

0

我假設你的代碼看起來是這樣的(給予或採取):

public static void main(String [] args) 
{ 
    ... 
    Stage myStage = new Stage(); 
    Player myPlayer = new Player(myStage); 

    myStage.addActor(myPlayer); 
    ... 
} 

... 

public class Player extends Actor 
{ 

    Stage myStage;   

    public Player(Stage _stage) 
    { 
     myStage = _stage; 

     myStage.addActor(<another Actor object>); 
    } 
} 

由於Java中的所有對象都是引用,當你通過myStage到myPlayer,你是不是抄襲myStage,而不是你'將參考文件傳遞給您已經聲明並初始化的階段。

總之,您可以從Player類中調用myStage.addActor(),而不會出現問題。然而,我建議看看你的類結構,以確保對象(如你的播放器)只封裝自己的功能。例如,如果按鈕僅用於控制,可能它們應該作爲擴​​展Actor的UI類與主方法分開添加到舞臺。

+0

夢幻般的答案。 Youve清理了我的誤解,首先嚐試:)當我回到家時,會將代碼付諸行動 – user3191767