libgdx专题Android开发经验谈Android知识

Android应用libGDX引擎系列(二)-libGDX 入门

2016-08-02  本文已影响3599人  AlexueQ

by AlexQ (email alexq_andr@163.com

图片名称
  • 启动gdx-setup.jar


    图片名称
  • Android需要配置SDK,执行“Generate”


    图片名称
  • AndroidStudio Open 文件夹


    图片名称
  • Run


    图片名称
  • Code预览:

        public class AndroidLauncher extends AndroidApplication {
        @Override
        protected void onCreate (Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
            initialize(new MyGdxGame(), config);
            }
        }
    
        public class MyGdxGame extends ApplicationAdapter {
        SpriteBatch batch;
        Texture img;
        @Override
        public void create () {
            batch = new SpriteBatch();
            img = new Texture("badlogic.jpg");
            }
        @Override
        public void render () {
            Gdx.gl.glClearColor(1, 0, 0, 1);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
            batch.begin();
            batch.draw(img, 0, 0);
            batch.end();
            }
        }
    

    Core

    libGDX 图形绘制

    主要学习四个类:SpriteBatch、Texture 、TextureRegion 、 Sprite
    
    1. Texture 类
    * 定义:图片从原始格式解码并上传到GPU就被称为纹理。
    
    * 功能:其实就是承装获取到目标图片的容器。
    
    * helloworld中有加载图片的事例:
    
        ```
            new Texture("badlogic.jpg");
        ``` 
    
    2. SpriteBatch 类
    * 定义:SpriteBatch用于绘制二维矩形参考纹理(区域)。SpriteBatch类可用于批量绘图命令和优化处理的GPU。
    
    * 功能:SpriteBatch可以把许多相同纹理一起描述并一起送入GPU,同时赋予纹理和坐标以便每个图形的绘制。-------------SpriteBatch可以理解为画笔。
    * helloworld中有加载图片的事例:
        ```
            SpriteBatch batch;
            ...
            public void render () {
                batch.begin();
                batch.draw(img, 0, 0);
                batch.end();
            }
        ``` 
    
    3. TextureRegion 类
    * API定义:定义了一个矩形区域的纹理。使用的坐标系统与x轴指向右,Y轴向下在左上角的起源。
    
    * 功能用途:实际操作中我们也经常使用图片的一部分,或者将多个图片资源集合在一个图片文件中。而要显示图片的一部分就可以使用TextureRegion类。
    
    4. Sprite 类
    * API定义:持有的几何形状,颜色,和纹理信息使用加载绘制2D精灵。一个精灵有定位和给定的宽度和高度尺寸。
    * 功能用途:TextureRegion的加强版,比TextureRegion多了一些功能,如:可以指定位置、颜色、旋转等。
    
        **其实Sprite的功能就是以上的集合。但是Sprite更方便,它用一个对象描述了一切,但是同时加入了很多TextureRegion和Texture没有的东西,如位置、颜色、旋转.**
    

    libGDX 舞台和演员

    1. 舞台 Stage类
    2. 演员 Actor类
    3. 舞台和演员的概念很好的抽象了游戏中的元素概念,实现了同一场景不同演员随意配置切换,以及同一演员出现在不同场景。

    libGDX 音效

    1. Audio 接口

    支持格式:mp3、ogg、wav等。

    public interface Audio {
       public Sound newSound(FileHandle fileHandle);
       public Music newMusic(FileHandle file);
       public AudioDevice newAudioDevice(boolean isMono);
    }
    
    2. Sound 接口
    Sound  sound = Gdx.audio.newSound(Gdx.files.internal("sound.wav"));
    sound.setLooping(true);
    sound.play();
    sound.setVolume(15);
    
    3. Music 类
    Music music = Gdx.audio.newMusic(Gdx.files.internal("xxx.ogg"));
    music.setLooping(true);
    music.setVolume(15);
    music.play();
    

    libGDX 资源加载器

    AssetManager 类 负责加载类似于 textures, bitmapfonts, tile maps, sounds, music 等类型的文件。
    API

    (1)clear() 方法:清空和删除所有已加载资源和预加载队列。

    (2)containsAsset(T asset) :返回的是一个布尔类型,检测是否加载了否个资源。

    (3)finishLoading() : 所有资源加载完成后,结束加载资源,也可以手动设置加载到某一项结束加载。

    (3)getAssetFileName(T asset) :获取资源名字,得到的是一个String类型的文件。

    (4)getLoadedAssets() :获取已经加载的资源数量。

    (5)getProgress() :获取加载进度,返回一个0 - 1之间的小数,这个一般可以用作制作进度条。

    (6)isLoaded(java.lang.String fileName) :返回的是一个布尔类型,检测你传入的文件是否已经被加载了,一般使用的if判断语句中。

    (7)load(java.lang.String fileName, java.lang.Class type) :将已传入的文件名和类型加入到预加载队列,为了防止名字和类型重复,这里需要将名字和类型都传入,常用。

    (8)setLoader(java.lang.Class type, AssetLoader loader) :设置加载器,其实AssetManager类中包装了需要Assetloader对象,这样才能完成不同类型的文件的加载,当然AssetManager也可以加入加载器。

    (9)unload(java.lang.String fileName) :卸载资源,如果某个资源不使用了,就可以卸载该资源,这样有利于游戏流畅性。

    (10)update():加载资源,实际上Load方法其实只是将预加载的资源加载到了预加载队列,实质上并没有加载资源,使用update()方法才会加载资源,调用该方法才能,使不断加载那写储存在预加载对了中的资源。

    功能优点:(官方翻译)

    (1)加载大部分资源采用异步加载的方式,这样就能在加载的同时不阻塞渲染进程.

    (2)实现了引用计数,当A和B都依赖C素材的时候,C只有在A,B都销毁了才会销毁.这也意味着即使一个资源加载了很多次,在内存中也之后一份.

    (3)使用一个单一管理器来实现管理所有素材.

    (4)可以实现加载素材时占用的系统内存。

    libGDX Particle (粒子效果&粒子编辑器)

    关于这个例子编辑器,个人推荐看看我下面提到的视频,里面有专门讲粒子编辑器使用的课程,比较直观。

    图片名称

    官方网站上对软件中的各个参数的解释如下:


    推荐

    1. 书目
      libGDX游戏开发入门指南


      image
    2. 网址

    3. 视频教程
      libGDX开发教程-奋斗小土豆


    上一篇 下一篇

    猜你喜欢

    热点阅读