libgdx Actor

直接上代码吧

 1 package com.mygdx.game;
 2
 3 import com.badlogic.gdx.Gdx;
 4 import com.badlogic.gdx.graphics.g2d.Animation;
 5 import com.badlogic.gdx.graphics.g2d.Batch;
 6 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 7 import com.badlogic.gdx.scenes.scene2d.Actor;
 8 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 9 import com.badlogic.gdx.scenes.scene2d.InputListener;
10
11 /**
12  * Created by HanHongmin on 14-7-20.
13  */
14 public class Plane extends Actor {
15     private Animation animation;
16     private float stateTime;
17
18     public Plane(Animation animation){
19         this.animation = animation;
20         setBounds(getX(), getY(), animation.getKeyFrames()[0].getRegionWidth(), animation.getKeyFrames()[0].getRegionHeight());
21
22         this.addListener(new InputListener(){
23             public boolean touchDown(InputEvent event, float x, float y, int pointer, int buttons){
24                 System.out.println("Touched" + getName());
25                 return true;
26             }
27         });
28     }
29
30     public void draw(Batch batch, float alpha){
31         stateTime = stateTime+Gdx.graphics.getDeltaTime();
32
33         TextureRegion toDraw = animation.getKeyFrame(stateTime);
34
35         batch.draw(toDraw, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(),
36                 getScaleX(), getScaleY(), getRotation());
37     }
38
39
40 }
 1 package com.mygdx.game;
 2
 3 import com.badlogic.gdx.ApplicationListener;
 4 import com.badlogic.gdx.Gdx;
 5 import com.badlogic.gdx.Input;
 6 import com.badlogic.gdx.graphics.GL20;
 7 import com.badlogic.gdx.graphics.Texture;
 8 import com.badlogic.gdx.graphics.g2d.Animation;
 9 import com.badlogic.gdx.graphics.g2d.TextureRegion;
10 import com.badlogic.gdx.scenes.scene2d.*;
11 import com.badlogic.gdx.utils.Array;
12
13 public class MyGdxGame implements ApplicationListener {
14     private Plane plane;
15     private Stage stage;
16     private Texture t1;
17     private Texture t2;
18     private Texture t3;
19
20     private float moveSpeed = 200;
21
22     @Override
23     public void create() {
24         stage = new Stage();
25
26         t1 = new Texture("plane1.png");
27         t2 = new Texture("plane2.png");
28         t3 = new Texture("plane3.png");
29         Array<TextureRegion> frames = new Array(4);
30         frames.add(new TextureRegion(t1));
31         frames.add(new TextureRegion(t2));
32         frames.add(new TextureRegion(t3));
33         frames.add(new TextureRegion(t2));
34
35         Animation animation = new Animation(0.05f,frames, Animation.PlayMode.LOOP);
36
37         plane = new Plane(animation);
38
39         plane.setCenterPosition(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);
40         plane.setName("飞机1");
41
42         stage.addActor(plane);
43
44         Gdx.input.setInputProcessor(stage);
45     }
46
47     @Override
48     public void dispose() {
49         t1.dispose();
50         t2.dispose();
51         t3.dispose();
52         stage.dispose();
53     }
54
55     @Override
56     public void render () {
57         Gdx.gl.glClearColor(0, 0, 0, 1);
58         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
59         float time = Gdx.graphics.getDeltaTime();
60         if(Gdx.input.isKeyPressed(Input.Keys.W)){
61             plane.setY(plane.getY()+moveSpeed*time);
62         }
63         if(Gdx.input.isKeyPressed(Input.Keys.A)){
64             if(plane.getScaleX()==1){
65                 plane.setScaleX(-1);
66                 plane.setX(plane.getX()+plane.getWidth());
67             }
68
69             plane.setX(plane.getX()-moveSpeed*time);
70         }
71         if(Gdx.input.isKeyPressed(Input.Keys.S)){
72             plane.setY(plane.getY()-moveSpeed*time);
73         }
74         if(Gdx.input.isKeyPressed(Input.Keys.D)){
75             if(plane.getScaleX()==-1){
76                 plane.setScaleX(1);
77                 plane.setX(plane.getX()-plane.getWidth());
78             }
79
80             plane.setX(plane.getX()+moveSpeed*time);
81         }
82
83         stage.act(Gdx.graphics.getDeltaTime());
84         stage.draw();
85     }
86
87     @Override
88     public void resize(int width, int height) {
89     }
90
91     @Override
92     public void pause() {
93     }
94
95     @Override
96     public void resume() {
97     }
98 }

三张图片资源如下:

libgdx Actor,布布扣,bubuko.com

时间: 2024-11-06 06:09:01

libgdx Actor的相关文章

libgdx actor 透明问题

遇到一个问题,自定义的Actor在使用batch.draw时,其他Actor设置的透明影响到了这个Actor 处理方法为 在自定义Actor中 draw方法中 绘制前,加入 Color color = batch.getColor(); batch.setColor(color.r, color.g, color.b, parentAlpha); batch.draw(xxx...) 问题解决.

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学习笔记:封装自己的Actor

为什么要去封装我们自己的Actor? 答:Actor本身可能无法满足我们的开发需求,或者无法支持各种各样的效果,由此需要在其基础上进行拓展. 下面贴出本人二次封装的CHActor代码,供大家参考:   1.CHActor使用了对象缓存池,自动管理释放,很好的解决了游戏中使用大量对象导致帧数较低的问题.    2.自行设置绘制的纹理,而不必使用Image.创建过多的Image会导致帧数下降的很厉害.   3.可自由继承CHActor,方便自己再次扩展. 用法: CHActor chactor  =

libgdx学习记录5——演员Actor

Actor也是libgdx中非常重要的一个元素,一般与stage配合一起使用.Actor能够设置大小,位置,旋转和动画等. 我们自定义的Actor一般需要继承于Actor,并且重写其中的act和draw方法. 自定义的actor是一个图片. 1 class MyActor extends Actor{ 2 TextureRegion region; 3 4 public MyActor(){ 5 Texture texture = new Texture( Gdx.files.internal(

Libgdx 之Actor 演员类

教程总目录: http://blog.csdn.net/zqiang_55/article/details/50878524 上一篇我们介绍了Libgdx中舞台类,按照类的继承图,我们应该介绍Actor类,从截图中我们知道Libgdx中的UI控件都是继承自Actor. 前面我们也介绍过Sprite类,Actor有点类似于Sprite类,保存位置,大小,颜色,旋转中心,缩放以及Actions等,同时里面也包含了一个舞台类.Actor的坐标系(local Coordinate)从左下角开始计算 我们

Libgdx window add alpha action change the background actor alpha

现象: Stage中包括一个Window,一个Actor,Window中加入alpha action后,Actor也随之消失:Actor加入alpha action后,不起作用. 解决: 重写draw方法,加入batch.setColor(getColor().r, getColor().g, getColor().b, getColor().a); import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.scene

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

libgdx Action 动作 动画

Libgdx中有个类Actions, 从它开始顺藤摸瓜就能把哪些简单的Action快速掌握 见代码: 1 public class ActionTestScreen implements Screen,InputProcessor{ 2 private Stage stage; 3 private Texture texture; 4 private Image img; 5 6 @Override 7 public void render(float delta) { 8 Gdx.gl.glC