Advertisement
Guest User

Untitled

a guest
Feb 13th, 2012
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.38 KB | None | 0 0
  1. import org.anddev.andengine.engine.Engine;
  2. import org.anddev.andengine.engine.camera.Camera;
  3. import org.anddev.andengine.engine.handler.IUpdateHandler;
  4. import org.anddev.andengine.engine.options.EngineOptions;
  5. import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
  6. import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
  7. import org.anddev.andengine.entity.scene.Scene;
  8. import org.anddev.andengine.entity.scene.background.ColorBackground;
  9. import org.anddev.andengine.entity.sprite.Sprite;
  10. import org.anddev.andengine.entity.util.FPSLogger;
  11. import org.anddev.andengine.opengl.texture.TextureOptions;
  12. import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
  13. import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
  14. import org.anddev.andengine.opengl.texture.region.TextureRegion;
  15. import org.anddev.andengine.ui.activity.BaseGameActivity;
  16.  
  17. import android.hardware.Sensor;
  18. import android.hardware.SensorEvent;
  19. import android.hardware.SensorEventListener;
  20. import android.hardware.SensorManager;
  21.  
  22. public class MoveSprite extends BaseGameActivity implements SensorEventListener {
  23.  
  24.     // ===========================================================
  25.     // Constants
  26.     // ===========================================================
  27.  
  28.     private static final int CAMERA_WIDTH = 800;
  29.     private static final int CAMERA_HEIGHT = 480;
  30.  
  31.     // ===========================================================
  32.     // Fields
  33.     // ===========================================================
  34.  
  35.     private Sprite sprite;
  36.     private Camera mCamera;
  37.     private BitmapTextureAtlas mTexture;
  38.     private TextureRegion mSpriteTextureRegion;
  39.     private SensorManager sensorManager;
  40.  
  41.     private int accellerometerSpeedX;
  42.     private int accellerometerSpeedY;
  43.     private int sX, sY; // Sprite coordinates
  44.  
  45.     // ===========================================================
  46.     // Constructors
  47.     // ===========================================================
  48.  
  49.     // ===========================================================
  50.     // Getter & Setter
  51.     // ===========================================================
  52.  
  53.     // ===========================================================
  54.     // Methods for/from SuperClass/Interfaces
  55.     // ===========================================================
  56.  
  57.     public Engine onLoadEngine() {
  58.         this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
  59.         return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE,
  60.                 new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
  61.                 this.mCamera));
  62.     }
  63.  
  64.     public void onLoadResources() {
  65.         this.mTexture = new BitmapTextureAtlas(32, 32,
  66.                 TextureOptions.BILINEAR_PREMULTIPLYALPHA);
  67.         this.mSpriteTextureRegion = BitmapTextureAtlasTextureRegionFactory
  68.                 .createFromAsset(this.mTexture, this, "gfx/face_box.png", 0, 0);
  69.  
  70.         this.mEngine.getTextureManager().loadTexture(this.mTexture);
  71.     }
  72.  
  73.     @SuppressWarnings("static-access")
  74.     public Scene onLoadScene() {
  75.         sensorManager = (SensorManager) this
  76.                 .getSystemService(this.SENSOR_SERVICE);
  77.         sensorManager.registerListener(this, sensorManager
  78.                 .getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
  79.                 sensorManager.SENSOR_DELAY_GAME);
  80.  
  81.         this.mEngine.registerUpdateHandler(new FPSLogger());
  82.         this.mEngine.registerUpdateHandler(new IUpdateHandler() {
  83.             public void onUpdate(float pSecondsElapsed) {
  84.                 updateSpritePosition();
  85.             }
  86.  
  87.             public void reset() {
  88.                 // TODO Auto-generated method stub
  89.             }
  90.         });
  91.  
  92.         final Scene scene = new Scene();
  93.         scene.setBackground(new ColorBackground(0.2f, 0.3f, 0.4f));
  94.  
  95.         sX = (CAMERA_WIDTH - this.mSpriteTextureRegion.getWidth()) / 2;
  96.         sY = (CAMERA_HEIGHT - this.mSpriteTextureRegion.getHeight()) / 2;
  97.  
  98.         sprite = new Sprite(sX, sY, this.mSpriteTextureRegion);
  99.         sprite.setScale(1);
  100.         scene.attachChild(sprite);
  101.  
  102.         return scene;
  103.     }
  104.  
  105.     public void onLoadComplete() {
  106.  
  107.     }
  108.  
  109.     public void onSensorChanged(SensorEvent event) {
  110.         synchronized (this) {
  111.             switch (event.sensor.getType()) {
  112.             case Sensor.TYPE_ACCELEROMETER:
  113.                 accellerometerSpeedX = (int) event.values[1];
  114.                 accellerometerSpeedY = (int) event.values[0];
  115.                 break;
  116.             }
  117.         }
  118.     }
  119.  
  120.     public void onAccuracyChanged(Sensor sensor, int accuracy) {
  121.         //
  122.     }
  123.  
  124.     // ===========================================================
  125.     // Methods
  126.     // ===========================================================
  127.  
  128.     private void updateSpritePosition() {
  129.         if ((accellerometerSpeedX != 0) || (accellerometerSpeedY != 0)) {
  130.             // Set the Boundary limits
  131.             int tL = 0;
  132.             int lL = 0;
  133.             int rL = CAMERA_WIDTH - (int) sprite.getWidth();
  134.             int bL = CAMERA_HEIGHT - (int) sprite.getHeight();
  135.  
  136.             // Calculate New X,Y Coordinates within Limits
  137.             if (sX >= lL)
  138.                 sX += accellerometerSpeedX;
  139.             else
  140.                 sX = lL;
  141.             if (sX <= rL)
  142.                 sX += accellerometerSpeedX;
  143.             else
  144.                 sX = rL;
  145.             if (sY >= tL)
  146.                 sY += accellerometerSpeedY;
  147.             else
  148.                 sY = tL;
  149.             if (sY <= bL)
  150.                 sY += accellerometerSpeedY;
  151.             else
  152.                 sY = bL;
  153.  
  154.             // Double Check That New X,Y Coordinates are within Limits
  155.             if (sX < lL)
  156.                 sX = lL;
  157.             else if (sX > rL)
  158.                 sX = rL;
  159.             if (sY < tL)
  160.                 sY = tL;
  161.             else if (sY > bL)
  162.                 sY = bL;
  163.  
  164.             sprite.setPosition(sX, sY);
  165.         }
  166.     }
  167.  
  168.     // ===========================================================
  169.     // Inner and Anonymous Classes
  170.     // ===========================================================
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement