android界面加载水滴loding,A simple libgdx game (一个容易的游戏)

package com.badlogic.drop;

import java.util.Iterator;

import com.badlogic.gdx.ApplicationListener;

import com.badlogic.gdx.Gdx;

import com.badlogic.gdx.Input.Keys;

import com.badlogic.gdx.audio.Music;

import com.badlogic.gdx.audio.Sound;

import com.badlogic.gdx.graphics.GL20;

import com.badlogic.gdx.graphics.OrthographicCamera;

import com.badlogic.gdx.graphics.Texture;

import com.badlogic.gdx.graphics.g2d.SpriteBatch;

import com.badlogic.gdx.math.MathUtils;

import com.badlogic.gdx.math.Rectangle;

import com.badlogic.gdx.math.Vector3;

import com.badlogic.gdx.utils.Array;

import com.badlogic.gdx.utils.TimeUtils;

public class Drop implements ApplicationListener {

private Texture dropImage;

private Texture bucketImage;

private Sound dropSound;

private Music rainMusic;

private SpriteBatch batch;

private OrthographicCamera camera;

private Rectangle bucket;

private Array raindrops;

private long lastDropTime;

@Override

public void create() {

// load the images for the droplet and the bucket, 64x64 pixels each

dropImage = new Texture(Gdx.files.internal("droplet.png"));

bucketImage = new Texture(Gdx.files.internal("bucket.png"));

// load the drop sound effect and the rain background "music"

dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));

rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));

// start the playback of the background music immediately

rainMusic.setLooping(true);

rainMusic.play();

// create the camera and the SpriteBatch

camera = new OrthographicCamera();

camera.setToOrtho(false, 800, 480);

batch = new SpriteBatch();

// create a Rectangle to logically represent the bucket

bucket = new Rectangle();

bucket.x = 800 / 2 - 64 / 2; // center the bucket horizontally

bucket.y = 20; // bottom left corner of the bucket is 20 pixels above the bottom screen edge

bucket.width = 64;

bucket.height = 64;

// create the raindrops array and spawn the first raindrop

raindrops = new Array();

spawnRaindrop();

}

private void spawnRaindrop() {

Rectangle raindrop = new Rectangle();

raindrop.x = MathUtils.random(0, 800-64);

raindrop.y = 480;

raindrop.width = 64;

raindrop.height = 64;

raindrops.add(raindrop);

lastDropTime = TimeUtils.nanoTime();

}

@Override

public void render() {

// clear the screen with a dark blue color. The

// arguments to glClearColor are the red, green

// blue and alpha component in the range [0,1]

// of the color to be used to clear the screen.

Gdx.gl.glClearColor(0, 0, 0.2f, 1);

Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

// tell the camera to update its matrices.

camera.update();

// tell the SpriteBatch to render in the

// coordinate system specified by the camera.

batch.setProjectionMatrix(camera.combined);

// begin a new batch and draw the bucket and

// all drops

batch.begin();

batch.draw(bucketImage, bucket.x, bucket.y);

for(Rectangle raindrop: raindrops) {

batch.draw(dropImage, raindrop.x, raindrop.y);

}

batch.end();

// process user input

if(Gdx.input.isTouched()) {

Vector3 touchPos = new Vector3();

touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);

camera.unproject(touchPos);

bucket.x = touchPos.x - 64 / 2;

}

if(Gdx.input.isKeyPressed(Keys.LEFT)) bucket.x -= 200 * Gdx.graphics.getDeltaTime();

if(Gdx.input.isKeyPressed(Keys.RIGHT)) bucket.x += 200 * Gdx.graphics.getDeltaTime();

// make sure the bucket stays within the screen bounds

if(bucket.x < 0) bucket.x = 0;

if(bucket.x > 800 - 64) bucket.x = 800 - 64;

// check if we need to create a new raindrop

if(TimeUtils.nanoTime() - lastDropTime > 1000000000) spawnRaindrop();

// move the raindrops, remove any that are beneath the bottom edge of

// the screen or that hit the bucket. In the later case we play back

// a sound effect as well.

Iterator iter = raindrops.iterator();

while(iter.hasNext()) {

Rectangle raindrop = iter.next();

raindrop.y -= 200 * Gdx.graphics.getDeltaTime();

if(raindrop.y + 64 < 0) iter.remove();

if(raindrop.overlaps(bucket)) {

dropSound.play();

iter.remove();

}

}

}

@Override

public void dispose() {

// dispose of all the native resources

dropImage.dispose();

bucketImage.dispose();

dropSound.dispose();

rainMusic.dispose();

batch.dispose();

}

@Override

public void resize(int width, int height) {

}

@Override

public void pause() {

}

@Override

public void resume() {

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值