2012-04-22 3 views
1

Актеры не имеют имен ниже. В libgdx лучше всего назначить имя для каждого актера?Как назвать актера в libgdx?

public class JewelsMainActivity implements ApplicationListener, InputProcessor { 

private Vector2 point = new Vector2(); 
public TextureAtlas jewelsAtlas; 
public Texture jewels; 
private SpriteBatch batch; 
public Actor[][] actors = new Actor[10][10]; 
public Stage stage; 
public int gridSize; 

@Override 
public void create() { 
    stage = new Stage(800, 600, false); 
    gridSize = 10; 
    batch = new SpriteBatch(); 
    jewels = new Texture(Gdx.files.internal("assets/gems1.png")); 
    jewelsAtlas = new TextureAtlas(Gdx.files.internal("assets/pack")); 
    for (int z = 0; z < gridSize; z++) { 
     for (int x = 0; x < gridSize; x++) { 
       Random r = new Random(); 
       int j = r.nextInt(2)+1; 
       actors[x][z] = new Image(jewelsAtlas.findRegion(""+j+"")); 
       actors[x][z].x = x*56; //each gem is 56*56 width/height 
       actors[x][z].y = z*56; 

// участники [x] [z] .name = "actor" + x + z; // косяк использовать это выше, как это не позволит ....

   stage.addActor(actors[x][z]); 

     } 
    } 
    Gdx.input.setInputProcessor(this); 
} 


@Override 
public void render() { 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
     stage.draw(); 
     batch.end(); 
} 

@Override 
public boolean touchDown(int x, int y, int pointer, int button) { 
     stage.toStageCoordinates(Gdx.input.getX(), Gdx.input.getY(), point); 
     Actor actor = stage.hit(point.x, point.y); 
     if (actor != null){ 

      Gdx.app.log("name", actor.name); 

// actor.name является нулевым

  Gdx.app.log("hashCode", ""+actor.hashCode()); 
      ((Image)actor).color.set((float)Math.random(), (float)Math.random(), (float)Math.random(), 0.5f + 0.5f * (float)Math.random()); 
     } 
    return false; 
} 

.... .... ... .

}

ответ

2

название является окончательным, и как таковое должно быть определено в конструктор.

Где у вас есть

actors[x][z] = new Image(jewelsAtlas.findRegion(""+j+""));

Использование

actors[x][z] = new Image(jewelsAtlas.findRegion(""+j+""), Scaling.none, Align.CENTER, "myawesomenewname");

+0

спасибо Sticky !! – user1320651

Смежные вопросы