libGDX中Stage,Actor,Action的使用

        在开始libGDX前,需要对openGL有个大概的概念了解。因为libGDX底层是使用openGL进行开发的,所谓的openGL,open指的是开源,他的真实名称是GL,若使用openGL进行开发,最关键的就是GL10,从这个入手进行3D游戏编程,同时掌握用于渲染的GLSurfaceView类,Renderer类,Renderer类,但其实openGL就是处理图像的接口而已。

        而libGDX其实更多的是一个库,一个游戏开发框架,lib指的就是库,包的意思,而GDX才是实际上的真正意义上的名字,就像他的项目创建器gdx-ui-set-up.jar一样,他的名字就是使用的GDX,同时开发中我们用到的也是GDX,gdx这样的名字。




        一个ligGDX的项目中,使用的是继承ApplicationListener(其实也可以是ApplicationAdapter)的类,ApplicationListener中有create(),resize(),pause(),resume(),dispose(),render(),其中使用最多的dispose()是进行资源释放使用的,resize()是进行尺寸重建用的,render()会被不停的被调用,因为libGDX使用的是不断刷屏的方法进行的图片的加载,就是说时隔0.173s进行一次加载,因此libGDX所使用的动漫加载方式相比android自身的加载方式有所区别,区别就在于Animation类还需要在render()中加载刷屏的程序。

        libGDX的最基本的使用是Sprite,SpriteBatch,Texture,TextureRegion,使用他们可以进行图片资源的相关加载,处理等操作。

        使用Animation可以进行动漫的制作,这里动漫其实就是图片按一定的时间间隔进行加载,同时Animation类的操作也是最基础的。这里其实使用的就是render()的刷屏,还可以实现Animation的移动,只需要在刷屏时,改变Animation的坐标即可。同时使用一个自定义的STATE数字进行状态的保存,这样还可以实现方向的转换。




        对于一个游戏引擎(其实确切的说是一个框架)来说,最重要最基本的是Stage,Actor的使用,因为游戏就相当于Actor与Stage的联合作用。这里总共3大重要的板块,分别是Stage,Actor,Action。

        Stage板块。InputProcessor子类是InputAdapter,InputAdapter的子类是Stage。同时InputProcessor的子类还有InputMultiplexer。同时注意Stage可以在resize()中使用setViewport()设置大小。

        Actor板块。Group的子类是Actor,Actor的子类是各种控件等。Group子类用于管理所有的Actor,Stage自身其实就是内嵌了一个Group进行管理,并且Actor可以使用getParent()得到管理自己的Group。同时其实所有的控件类基本都在scene2d.ui包中,这里的空间构成了libGDX的控件体系。

        Action板块。Action的子类是各种实现动作如alpha,scale等的类,其中有MoveToAction等表现类,和DelayAction等控制类(控制类控制表现类),但是Action的类都是通过Actions的方法得到的静态类(就是说表现类,控制类在Actions的方法中是静态的)。表现类可以使用setInterpolator(),而且表现类都是继承自TemporalAction的子类,所以所用TemporalAction的子类都可以使用setInterpolator()方法。表现类可以是Actor有诸如加速,减速等效果,而控制类则是表现为延迟,并发,重复等效果。


        使用的方法是Gdx.input.setInputProcessor(Stage);Stage.addActor(Actor);Actor.addAction(Action);xxxxAction action=new Actions.xxxx();xxxxAction.setInterpolator();(当xxxxAction为表现类而不是控制类时,可以使用setInterpolator()进行表现动作的改变,如加速,加速移动等)。


        Stage的act()方法会自动调用Actor的act()方法,Actor的act()会自动调用Action的act()方法。当需要Actor有动作是act()必不可少,而当不需要Actor有动作时则·act()可不加。对于Stage的draw()方法,自身会自调用Group的draw()的参数SpriteBatch的begin(),end()。对于addListener()方法里面传入的参数其实英爱是EventListener,但是EvenListener是个接口,EventListener子类有InputListener,一般我们使用InputListener作为传入对象。


        总的来说,这里就是在说明Stage,Actor的体系与方法。


        同时注意枚举类型的使用,enum STATE{LEFT,RIGHT},STATE state=STATE.LEFT;

        还有for(Texture[] tt:Texture[][]){for(Texture t:tt){}} 与 Texture[]=Texture[][],这里注意数组元素的类型,同时注意数组的复制以及二维数组的结构,其实数字的length返回的数字代表有多少一维数组。







(未完成)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值