Libgdx 之Actor 演员类

Posted zqiang_55

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Libgdx 之Actor 演员类相关的知识,希望对你有一定的参考价值。

教程总目录: http://blog.csdn.net/zqiang_55/article/details/50878524

上一篇我们介绍了Libgdx中舞台类,按照类的继承图,我们应该介绍Actor类,从截图中我们知道Libgdx中的UI控件都是继承自Actor。
前面我们也介绍过Sprite类,Actor有点类似于Sprite类,保存位置,大小,颜色,旋转中心,缩放以及Actions等,同时里面也包含了一个舞台类。Actor的坐标系(local Coordinate)从左下角开始计算
我们在初始化Actor时可以设置Listener,处理一些监听事件。

注意:1. Actor的draw函数默认是空的,需要重写。
2./** Called by the framework when this actor or any parent is added to a group that is in the stage.
* @param stage May be null if the actor or any parent is no longer in a stage. */
protected void setStage (Stage stage)
this.stage = stage;

3. 此外还有一个函数需要注意:
/* Set bounds the x, y, width, and height. /
public void setBounds (float x, float y, float width, float height)

测试代码:

    Stage stage;
    MyActor myActor;

    @Override
    public void create() 
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);

        myActor = new MyActor();
        yActor.setX(Gdx.graphics.getWidth() / 2 - myActor.getWidth() / 2);
        myActor.setY(Gdx.graphics.getHeight() / 2 - myActor.getHeight() / 2);
        stage.addActor(myActor);
    

    @Override
    public void render() 
        Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        stage.act();
        stage.draw();
    

    @Override
    public void dispose() 
        stage.dispose();
        myActor.dispose();
    

    public class MyActor extends Actor implements Disposable 
        TextureRegion region;

        public MyActor() 
            region = new TextureRegion(new Texture("badlogic.jpg"));

            setSize(this.region.getRegionWidth(), this.region.getRegionHeight());

            // 设置监听函数,可以处理一些事情
            addListener(new ClickListener() 

                @Override
                public void clicked(InputEvent event, float x, float y) 
                   //点击图片,图片隐藏![这里写图片描述](https://img-blog.csdn.net/20160425220710777)
                    setVisible(false);
                    super.clicked(event, x, y);
                
            );
        

        @Override
        public void draw(Batch batch, float parentAlpha) 
            super.draw(batch, parentAlpha);

            batch.draw(region, getX(), getY(), 
                    getOriginX(), getOriginY(), 
                    getWidth(), getHeight(), 
                    getScaleX(), getScaleY(), 
                    getRotation());
            

        @Override
        public void dispose() 
            region.getTexture().dispose();
        

    

以上是关于Libgdx 之Actor 演员类的主要内容,如果未能解决你的问题,请参考以下文章

开源java游戏框架libgdx专题-11-核心库-演员类

何时在 libgdx 中使用演员?啥是缺点和优点?

AddListener到LibGdx Scene2d中actor的特定位置

Libgdx Box2d Raycast无法投射多条光线

碰撞时中断 libgdx 操作

Libgdx之Window Dialog 窗口和对话框