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) {
                   //点击图片,图片隐藏![这里写图片描述](http://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();
        }

    }

时间: 2024-10-11 17:31:43

Libgdx 之Actor 演员类的相关文章

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

演员类,又称为Actor类,是libgdx开发中最基本的元素,可以被继承. 演员类,从OpenGL类的角度来理解,可以称为一个二维场景节点.它本身具有位置(postion).边界矩形(类似Retangle).锚点(origin).缩放比例(scale).旋转(rotation).颜色(color)等属性 常用方法: act(float delta):更新游戏中的演员的状态,常在render中调用,参数一般传入游戏渲染间隔时间. addAction(Action action):添加动作(Acti

深入理解Libgdx中的Skin类

本文不是直接翻译...本文在Libgdx的官方wiki的基础上,加上一些自己的理解.所以,难免会一些甚至是很多的理解很片面的东西.写的不好,还请见谅.... 其实 其实,在LibGDX的官方文档对Skin这个类的介绍中,其主要介绍了以下几个方面: 1.往Skin里面添加资源的两种方式. 2.从Skin中获取资源的方式. 第一种方式:以atlas为操作对象: atlas = new TextureAtlas(Gdx.files.internal("meijia.atlas"), Gdx.

libgdx判断actor与circle是否重叠

实质是检测矩形与circle是否重叠 基本函数,判断点是否在circle中 1 public static boolean IsInside( float x, float y, Circle circle ){ 2 float disX = x - circle.x; 3 float disY = y - circle.y; 4 return disX*disX + disY*disY <= circle.radius*circle.radius; 5 } 再判断矩形4个点是否在其中,有一个在

Libgdx 之Stage 舞台类

教程总目录: http://blog.csdn.net/zqiang_55/article/details/50878524 前面说过在Libgdx画出图片的有SpriteBatch和舞台类,现在就来探讨舞台类Stage. 其实Stage里面默认会初始化化一个SpriteBatch,Stage主要工作是绘制UI元素,包括Image, Label, Button等,再继续了解下去之前,让我们先看一张图,UI篇也主要是按照这张图来讲解 Stage类的说明: 首先Stage使用的坐标原点是从屏幕左下方

libgdx游戏框架介绍

libgdx作为上层为java,底层c和c++的游戏引擎.简直是优秀得一塌糊涂.  这个游戏框架最初只有1个人在维护,现在已经加入不少人了,越来越给力. libgdx的架构 很清晰, 我们先从包的结构分析: assets 代表资源包,用于资源加载等管理. audio 音频包,游戏需要播放声音时用. files 文件处理包,内部主要对象是FileHandle ,如果你用过Libgdx肯定对次很熟悉,libgdx加载纹理图片等都是通过此对象. graphics 绘画相关,就是我们要把游戏中的控件或者

Android游戏框架Libgdx使用入门

转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ Libgdx项目地址:http://code.google.com/p/libgdx/ Libgdx是一款支持2D与3D游戏开发的游戏类库,兼容大多数微机平台(标准JavaSE实现,能执行在Mac.Linux.Windows等系统)与Android平台(Android1.5以上就可以使用.Andro

【开源java游戏框架libgdx专题】-10-核心库-Viewport

Viewport类,又称为视口类,主要负责管理游戏相机,处理游戏世界坐标与布景层坐标的换算关系.在移动端开发,不像PC端容易.因为要适配不同分辨率的设备.libgdx处理不同的设备屏幕时,用视口处理舞台与相机的关系.主要使用其子类. 7种Viewport类型: StretchViewport:伸展视口,支持设备宽度与高度比改变,根据参数内的宽度和高度来自动适应不同设备的屏幕 FitViewport:会保持自身参数内的宽度与高度比,并以此为依据尽量拉伸类适应屏幕.可能出现黑边. FillViewp

第一个libgdx程序--仿别踩白块

学libgdx有一段时间了,有一个星期了吧,边做边学,选的是别踩白块. libgdx总体思想可以用下面这张图来表示 总体可分为两层吧,入口不算,Screen+Actor. 这个很好理解啊,你去看话剧表演,得有屏幕吧,屏幕上面有英雄,有坏蛋,还有道具吧,  所以,简单来说暂且就看作两层. 下面看看具体项目: 首先跑起来是这样的:                                       代码是这样的: 1. 入口类 FirstGame              既然是入口,主要做

Libgdx之Window Dialog 窗口和对话框

Libgdx提供了窗口类(Window)让开发者对用户进行提示,或者进行一些输入操作. Window可以点击标题进行拖动,也可以设置为Modal模式.preferred size是由标题文字和里面装载的Actor共同决定的,当调用pack方法时会重新计算大小. Dialog extends Window, Dialog是一个模式窗口(Modal Window),提供了content table和button table,很方便的往Dialog找那个添加文字.当点击button时,会调用resul