您的位置:首页 > 其它

AndEngine实现Sprite更换图片

2012-08-24 10:50 316 查看
也是在游戏中很常用的功能,参考了官方的例子UpdateTextureExample,不同的是我使用的是Sprite和TextureRegion,而官方例子中是AnimatedSprite和TiledTextureRegion。其实原理是一样的。

我准备了2张图片a.jpg和b.jpg,Scene启动时加载a.jpg,点击Scene在两张图片间进行切换。

public class MainActivity extends SimpleBaseGameActivity {
private static final int CAMERA_WIDTH = 320;
private static final int CAMERA_HEIGHT = 480;

private BitmapTextureAtlas mBitmapTextureAtlas;
private TextureRegion mFaceTextureRegion;

private boolean mSmile = true;

@Override
public EngineOptions onCreateEngineOptions() {
Toast.makeText(
this,
"Touch the screen to update (redraw) an existing BitmapTextureAtlas with every touch!",
Toast.LENGTH_LONG).show();

final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);

return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED,
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
}

@Override
protected void onCreateResources() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

this.mBitmapTextureAtlas = new BitmapTextureAtlas(
this.getTextureManager(), 128, 128, TextureOptions.BILINEAR);
this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory
.createFromAsset(this.mBitmapTextureAtlas, this, "a.jpg", 0, 0);
this.mBitmapTextureAtlas.load();
}

@Override
protected Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());

final Scene scene = new Scene();
scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));

final float centerX = (CAMERA_WIDTH - this.mFaceTextureRegion
.getWidth()) / 2;
final float centerY = (CAMERA_HEIGHT - this.mFaceTextureRegion
.getHeight()) / 2;

final Sprite face = new Sprite(centerX, centerY, mFaceTextureRegion,
this.getVertexBufferObjectManager());
scene.attachChild(face);
// scene的点击事件
scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
@Override
public boolean onSceneTouchEvent(Scene pScene,
TouchEvent pSceneTouchEvent) {
if (pSceneTouchEvent.isActionUp()) {
// 通过一个条件来判断当前需要加载哪张图片
MainActivity.this.mSmile = !MainActivity.this.mSmile;
BitmapTextureAtlasTextureRegionFactory.createFromAsset(
MainActivity.this.mBitmapTextureAtlas,
MainActivity.this,
MainActivity.this.mSmile ? "a.jpg" : "b.jpg", 0, 0);
}
return false;
}
});
return scene;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: