LibGDX_4.3:舞台(ステージ)


本論文のリンク:http://blog.csdn.net/xietansheng/article/details/50187111
LibGDX基礎教程(総目次)
1.概要
舞台は多くの俳優(Actor)の「演技」の場所であり、異なるレベルの俳優を含む2 Dシーンと見なされ、視認口(全体スケーリング表示/画面適応)と入力イベント(タッチパネル、マウスクリック、ボタンボタン押しなど)を処理し、俳優に配布することができる.
2.舞台類(ステージ)
ステージの一部の方法:
  • float get Width():ステージの幅を取得する
  • float get Height():ステージの高さを取得する
  • void act(float delta):舞台ロジックを更新し、舞台の俳優をバッチリ処理する(自動的に俳優のactを呼び出す(方法が俳優の論理を更新する)
  • .
  • void draw():舞台を描いて、舞台の俳優を自動的に呼び出します.
  • void dispose():ステージ中のすべてのリソースを解放する
  • bootlean addListener:イベントを追加してステージ
  • に傍受する.
  • bootlean removeListener(EventListener listener):モニターを除去する
  • void addActor(Actor actor):舞台に俳優を追加します.
  • void clear():舞台の俳優全員を削除する
  • .
  • Array<Actor> getActors():舞台の俳優全員を取得する
  • Group getRoot():舞台で俳優を守るすべての俳優を獲得する
  • Group:俳優グループは、Actorを継承し、俳優でもあります.舞台ではGroupのオブジェクトを維持し、ステージに追加した俳優が最終的にGroupに追加されました.ステージクラスでは俳優を増やす方法がありますが、俳優を削除する方法はありません.俳優を削除する必要があれば、stage.get Rootを呼び出す必要があります.方法はまずステージのGroupオブジェクトを取得し、Groupオブジェクトのgroup.removeActorメソッドを呼び出します.
    3.コードの例
    ここでは前の章の俳優を参照してください.
    package com.libgdx.test;
    
    import com.badlogic.gdx.graphics.g2d.Batch;
    import com.badlogic.gdx.graphics.g2d.TextureRegion;
    import com.badlogic.gdx.scenes.scene2d.Actor;
    
    /** *       */
    public class MyActor extends Actor {
    
        private TextureRegion region;
    
        public MyActor(TextureRegion region) {
            super();
            this.region = region;
            setSize(this.region.getRegionWidth(), this.region.getRegionHeight());
        }
    
        public TextureRegion getRegion() {
            return region;
        }
    
        public void setRegion(TextureRegion region) {
            this.region = region;
            setSize(this.region.getRegionWidth(), this.region.getRegionHeight());
        }
    
        @Override
        public void act(float delta) {
            super.act(delta);
        }
    
        @Override
        public void draw(Batch batch, float parentAlpha) {
            super.draw(batch, parentAlpha);
            if (region == null || !isVisible()) {
                return;
            }
            batch.draw(
                    region, 
                    getX(), getY(), 
                    getOriginX(), getOriginY(), 
                    getWidth(), getHeight(), 
                    getScaleX(), getScaleY(), 
                    getRotation()
            );
        }
    
    }
    ゲームマスタープログラムの起動エントリクラス:
    package com.libgdx.test;
    
    import com.badlogic.gdx.ApplicationAdapter;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.graphics.GL20;
    import com.badlogic.gdx.graphics.Texture;
    import com.badlogic.gdx.graphics.g2d.TextureRegion;
    import com.badlogic.gdx.scenes.scene2d.Stage;
    
    /** *             */
    public class MainGame extends ApplicationAdapter {
    
        //   
        private Texture texture;
    
        //       
        private MyActor actor;
    
        //   
        private Stage stage;
    
        @Override
        public void create() {
            //     , badlogic.jpg        256 * 256
            texture = new Texture(Gdx.files.internal("badlogic.jpg"));
            //     ,        (0, 0),       
            actor = new MyActor(new TextureRegion(texture));
    
            //              ,          
            stage = new Stage();
    
            //            ,               
            stage.addActor(actor);
        }
    
        @Override
        public void render() {
            //     
            Gdx.gl.glClearColor(0, 0, 0, 1);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    
            /* *            (SpriteBatch),                begin()   end()   , *        ,          act()   draw()      */
    
            //       ,          (          act()         )
            stage.act();
    
            //     ,          (          draw()       )
            stage.draw();
        }
    
        @Override
        public void dispose() {
            //       
            if (texture != null) {
                texture.dispose();
            }
            //       
            if (stage != null) {
                stage.dispose();
            }
        }
    
    }
    実行結果: