I am creating a custom class that extends from Actor,just like this:

public class MyActor extends Actor {
ProgressBar bar;
Label nameLabel;
TextButton button;
public MyActor(String name, Skin skin){
    nameLabel = new Label(name, skin);
    button = new TextButton("Whatever",skin);
    bar = new ProgressBar(0f,5f,1f,false,skin);

public void act(float delta) {
    bar.setBounds(getX(), getTop()-getHeight() / 3f, getWidth(), getHeight() / 3f);
    nameLabel.setBounds(getX(), getY()+getHeight() / 3f, getWidth(), getHeight() / 3f);
    button.setBounds(getX(), getY(), getWidth(), getHeight() / 3f);

public void draw(Batch batch, float parentAlpha) {
    super.draw(batch, parentAlpha);
    bar.draw(batch, parentAlpha);
    nameLabel.draw(batch, parentAlpha);
} }

Then I try to add it to a Table:

Table myTable = new Table();

But it always gets drawn in the 0,0 coordinates!, what am I doing wrong? Do I have to override another method?

  • \$\begingroup\$ Add the code for myTable instead of MyActor. \$\endgroup\$
    – ott--
    Feb 3 '16 at 21:45
  • \$\begingroup\$ @ott-- How????? \$\endgroup\$ Feb 3 '16 at 22:03
  • \$\begingroup\$ Edit your question. \$\endgroup\$
    – ott--
    Feb 3 '16 at 22:07
  • \$\begingroup\$ Did you ever find a solution to this? \$\endgroup\$ Jan 31 '17 at 15:15

I know its late but it might help someone, basically when we create actors, in the act() we'll have to set its layout boundary relative to the parent. Layout boundary helps identify the size of the custom actor.

someActor.setBounds( getParent().getX()+getX(), getParent.getY()+getY(), someActor.getPrefWidth(), someActor.getPrefHeight() );

I ran into a similar problem where despite multiple instances of my actor in table.add(myActor) they just stacked on top of each other. That is they weren't put into separate rows/columns visually using scene2d's Table.

I updated myActor to extend Widget (instead of extending Actor) and implemented getPrefWidth and getPrefHeight which solved the problem.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.