java 异步加载图片_libgdx异步加载图片资源 | 学步园

1.PragressBar还是上例中封装的Progress主要代码如下:

package com.jun.prograss;

import android.R.anim;

import com.badlogic.gdx.ApplicationListener;

import com.badlogic.gdx.Gdx;

import com.badlogic.gdx.assets.AssetManager;

import com.badlogic.gdx.graphics.GL10;

import com.badlogic.gdx.graphics.Texture;

import com.badlogic.gdx.scenes.scene2d.Stage;

import com.jun.load.AnimalActor;

public class Progress implements ApplicationListener{

private PrograssBar bar;

private Stage stage;

AnimalActor animal;

AssetManager manager;

boolean hasinit;

@Override

public void create() {

// TODO Auto-generated method stub

bar=new PrograssBar(10, 10);

stage=new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);

stage.addActor(bar);

//是泪花AssetManager对象

manager=new AssetManager();

//传入AssetManager的引用,便于animal的资源初始化,只有在调用initResourse方法时候才进行是泪花

animal=new AnimalActor(manager);

//加载29帧动画

for(int i=1;i<30;i++){

manager.load("animal/"+i+".png",Texture.class);

}

}

@Override

public void dispose() {

// TODO Auto-generated method stub

bar.dispose();

animal.dispose();

manager.clear();

manager.dispose();

}

@Override

public void pause() {

// TODO Auto-generated method stub

}

@Override

public void render() {

// TODO Auto-generated method stub

Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

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

stage.act(Gdx.graphics.getDeltaTime());

stage.draw();

if(!manager.update()){

bar.setProgress(manager.getProgress()*100);

}

if(!hasinit&&manager.update()&&Gdx.input.isTouched()){

stage.removeActor(bar);

System.out.print("-------#$@#%#$%#^%#^#%@"+(animal==null));

animal.initResourse();

System.out.println("#$@#%#$%#^%#^#%@"+(animal==null));

stage.addActor(animal);

hasinit=true;

}

if(!manager.update()){

System.out.println("QueuedAssets:"+manager.getQueuedAssets());

System.out.println("LoadAssets:"+manager.getLoadedAssets());

System.out.println("Progress:"+manager.getProgress());

}

//if(bar.progress<100){

//

//bar.progress+=0.5;

//

//

//}

//if(bar.progress==100){

//

//bar.progress=0;

//

//}

}

@Override

public void resize(int arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void resume() {

// TODO Auto-generated method stub

}

}

2.AnimalActor类主要代码:

package com.jun.load;

import java.util.ArrayList;

import com.badlogic.gdx.Gdx;

import com.badlogic.gdx.assets.AssetManager;

import com.badlogic.gdx.graphics.Texture;

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

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

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

import com.badlogic.gdx.scenes.scene2d.Actor;

import com.badlogic.gdx.utils.Disposable;

public class AnimalActor extends Actor implements Disposable{

private ArrayList textArray=new ArrayList();

private ArrayList textReArray=new ArrayList();

Animation animation;

TextureRegion[] workFrame;

float stateTime;

TextureRegion currentFrame;

AssetManager manager;

@Override

public void draw(SpriteBatch arg0, float arg1) {

// TODO Auto-generated method stub

stateTime+=Gdx.graphics.getDeltaTime();

//得到下一帧

currentFrame=animation.getKeyFrame(stateTime, true);

//以(0,0)绘制为起点,左下角为 0,0 画出动画 大小为 128*128

arg0.draw(currentFrame, 0,0,128,128);

}

public AnimalActor(AssetManager manager){

this.manager=manager;

}

@Override

public Actor hit(float arg0, float arg1) {

// TODO Auto-generated method stub

return this;

}

@Override

public void touchDragged(float x, float y, int pointer) {

// TODO Auto-generated method stub

//super.touchDragged(x, y, pointer);

}

@Override

public void touchUp(float x, float y, int pointer) {

// TODO Auto-generated method stub

//super.touchUp(x, y, pointer);

}

@Override

public boolean touchDown(float x, float y, int pointer) {

// TODO Auto-generated method stub

return false;

}

public void initResourse(){

Texture tex;

int j;

for(int i=1;i<30;i++){

textArray.add(manager.get("animal/"+i+".png", Texture.class));

}

// TODO Auto-generated constructor stub

for(int i=0;i

tex=textArray.get(i);

//注意TextureRegion 构造函数的参数

TextureRegion temtex=new TextureRegion(tex);

textReArray.add(temtex);

}

j=textReArray.size();

workFrame=new TextureRegion[j];

for(int i=0;i

workFrame[i]=textReArray.get(i);

//设置的是0.06s一帧

animation = new Animation(0.06f, workFrame);

}

@Override

public void dispose() {

// TODO Auto-generated method stub

for(int i=0;i

textArray.get(i).dispose();

}

}

}

3.PrograssBar.java主要内容:

package com.jun.prograss;

import com.badlogic.gdx.Gdx;

import com.badlogic.gdx.graphics.Texture;

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

import com.badlogic.gdx.scenes.scene2d.Actor;

import com.badlogic.gdx.utils.Disposable;

public class PrograssBar extends Actor implements Disposable {

Texture platform;

Texture bar;

int height;

int width;

float progress;

float powerx,powery;

public PrograssBar(int x,int y){

//super();

this.x=x;

this.y=y;

platform=new Texture(Gdx.files.internal("black.png"));

bar=new Texture(Gdx.files.internal("green.png"));

height=Gdx.graphics.getHeight();

width=Gdx.graphics.getWidth();

//自己敲代码时候一定要注意800f 400f 后面不带f浮点数标示,不会报错但是进度条一直不出来

powerx=Gdx.graphics.getWidth()/800f;

powery=Gdx.graphics.getHeight()/480f;

}

public void setProgress(float progress){

this.progress=progress;

}

@Override

public void draw(SpriteBatch batch, float arg1) {

// TODO Auto-generated method stub

//batch.draw(platform, (Gdx.graphics.getWidth()-bar.getWidth()*powerx)/2, 0,platform.getWidth()*powerx, platform.getHeight()*powery);

//batch.draw(bar, (Gdx.graphics.getWidth()-bar.getWidth()*powerx)/2,0,bar.getWidth()*progress/100f*powerx, bar.getHeight()*powery);

batch.draw(platform, (Gdx.graphics.getWidth()-bar.getWidth()*powerx)/2, 0,platform.getWidth()*powerx,platform.getHeight()*powery);

batch.draw(bar,(Gdx.graphics.getWidth()-bar.getWidth()*powerx)/2,0,bar.getWidth()*progress/100f*powerx,bar.getHeight()*powery);

}

@Override

public Actor hit(float arg0, float arg1) {

// TODO Auto-generated method stub

return null;

}

@Override

public void dispose() {

// TODO Auto-generated method stub

platform.dispose();

bar.dispose();

}

}

进度条前进结束,  进度条消失移除进度条,点击屏幕    开始播放机器狗动画!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值