1

別のクラスで作成した 1 つの変数にアクセスしようとすると問題が発生します。

新しいクラスを作成するクラス GameScene があります。

npcArray[0] = new Npc(-100, 100, vbom, camera, physicsWorld, 0);

npcArray[0] には、以前のクラスで作成された変数へのアクセスが必要です。どうすればアクセスできますか?

編集1:

クラス1:

public class GameScene extends BaseScene implements IOnSceneTouchListener, IOnAreaTouchListener {

    public Npc[] npcArray = new Npc[4];
    public Bullet[] bulletArray = new Bullet[500];
    public static Zombie[] zombieArray = new Zombie[50];

        //code...

private void createNPCs(){
        npcArray[0] = new Npc(-100, 100, vbom, camera, physicsWorld, 0);
        attachChild(npcArray[0]);
        registerTouchArea(npcArray[0]);
        npcArray[1] = new Npc(200, 100, vbom, camera, physicsWorld, 1);
        attachChild(npcArray[1]);
        registerTouchArea(npcArray[1]);
    }

クラス 2:

public class Npc extends Sprite{

       //code...    

                if(distanciaMinima <= 3 && distanciaMinima != -1 && timer >= 200 ){
                    timer = 0;
                    Vector2 vectorUnitariBullet = new Vector2(GameScene.zombieArray[zombieProper].body.getPosition()).sub(body.getPosition()).nor();
                    GameScene.createBullet(ArrayPosition, vectorUnitariBullet, accuracy);
                }
}

したがって、npcArray["number"] にいるときは、変数 bulletArray またはメソッドの例にアクセスしたい: "GameScene.createBullet()" *今は間違っている

編集2:

私のコード構造はこのゲームを参照しています: Game Code Download at the end

Player にいるときに、GameScene で作成された変数にアクセスしようとしています。

私の下手な英語でごめんなさい。

4

1 に答える 1

1

Npc への GameScene 参照を追加します。コンストラクタを編集します。

Class Npc
{
   public GameScene gs;
   public Npc(int x, int y, ..... , GameScene gs)
   {
       this.gs = gs;   
   }
}

次の用語を使用して、コンストラクターでゲーム シーンを渡します。

npcArray[0] = new Npc(-100, 100, vbom, camera, physicsWorld, 0, this);

アクセスするには:

npcArray[0].gs.variable_name

これにより、追加のメモリ割り当てが発生することはありません。

于 2013-10-08T16:22:37.073 に答える