AndEngine实现Sprite更换图片

来源:互联网 发布:centos创建网络 编辑:程序博客网 时间:2024/06/11 18:25

也是在游戏中很常用的功能,参考了官方的例子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;@Overridepublic 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);}@Overrideprotected 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();}@Overrideprotected 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() {@Overridepublic 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;}}



原创粉丝点击