现在的位置: 首页 > 综合 > 正文

AndEngine实现Sprite更换图片

2013年09月15日 ⁄ 综合 ⁄ 共 2814字 ⁄ 字号 评论关闭

package fu.testchangetextureregion;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.FillResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.scene.Scene.IOnSceneTouchListener;
import org.anddev.andengine.entity.scene.background.ColorBackground;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.opengl.texture.Texture;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
import org.anddev.andengine.ui.activity.BaseGameActivity;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class ChangeTextureRegion extends BaseGameActivity {

 private static final float CAMERA_WIDTH = 320;
 private static final float CAMERA_HEIGHT = 480;
 private Camera mCamera;
 private Texture bulletT;
 private TextureRegion bulletTr;
 private Scene mscene;
 private boolean ok=true;
 private Sprite bullet;
 
 
 @Override
 public Engine onLoadEngine() {
  mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
  return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT,
    new FillResolutionPolicy(), mCamera).setNeedsMusic(true)
    .setNeedsSound(true));
 }

 @Override
 public void onLoadResources() {
  TextureRegionFactory.setAssetBasePath("gfx/");
  
  bulletT=new Texture(32, 32, TextureOptions.DEFAULT);
  bulletTr=TextureRegionFactory.createFromAsset(bulletT, this, "21.jpg", 0, 0);
  this.mEngine.getTextureManager().loadTexture(bulletT);
  
 }

 @Override
 public Scene onLoadScene() {
  this.mEngine.registerUpdateHandler(new FPSLogger());
  mscene=new Scene(1);
  mscene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));
  
  
  final float centerX = (CAMERA_WIDTH - this.bulletTr.getWidth()) / 2; 
  final float centerY = (CAMERA_HEIGHT - this.bulletTr.getHeight()) / 2; 

  bullet=new Sprite(centerX, centerY, bulletTr);
  mscene.attachChild(bullet);
  mscene.setOnSceneTouchListener(new IOnSceneTouchListener(){

   @Override
   public boolean onSceneTouchEvent(Scene pScene,
     TouchEvent pSceneTouchEvent) {
    if(pSceneTouchEvent.isActionDown()){//pSceneTouchEvent.getAction()==TouchEvent.ACTION_UP
     ChangeTextureRegion.this.ok= !ChangeTextureRegion.this.ok;
     TextureRegionFactory.createFromAsset(ChangeTextureRegion.this.bulletT,
       ChangeTextureRegion.this,
       ChangeTextureRegion.this.ok?"21.jpg":"22.jpg", 0, 0);
    }
    return false;
   }
   
  });
  
  
  return mscene;
 }

 @Override
 public void onLoadComplete() {
  // TODO Auto-generated method stub
  
 }

 

}

 

抱歉!评论已关闭.