Android: AndEngine рдХреЗ рд╕рднреА рдЪрд╛рд░ рддрд░рдл рдШреБрдорд╛рдПрдБ

рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдиреА рдереА - рд╕реНрдХреНрд░реАрди рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ andengine рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреЗрдо рдЪрд▓рд╛рдПрдВред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ - рдкрд░рд┐рджреГрд╢реНрдп рдФрд░ рдЪрд┐рддреНрд░ рдиреЗ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдЙрдард╛рдПред рд╢реЗрд╖ рдкреНрд░рд╛рд╡рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдЙрдареЗ - рд╕рдВрдХреЗрддрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдкрд░реАрддред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдкред рдореБрдЭреЗ рд╕реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдкрдбрд╝рд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рди рдХреЗрд╡рд▓ рдПрдиреНрдЧрд┐рдбреАрдЗрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдирд┐рдпрдорд┐рдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереА:
public class SensorRotation { private SensorManager sensorManager; private long lastUpdateTime; private int orientation = 1; private SensorEventListener sensorListener; private Activity activity; private boolean rightPosition = false; public SensorRotation instance; /** *   * * @param context  */ public SensorRotation(Context context) { sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); lastUpdateTime = 0; } /** *      * * @param activity * @param listener */ public void register(Activity activity, SensorEventListener listener) { try { if (sensorListener != null) { sensorManager.unregisterListener(sensorListener); } this.sensorListener = listener; this.activity = activity; sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); Log.v("Activity = " + activity.getLocalClassName()); } catch (Exception e) { e.printStackTrace(); } } /** *   */ public void unregister() { sensorManager.unregisterListener(sensorListener); Log.v("unregister"); } private boolean in(float value, int min, int max) { return (value > min && value < max); } private int getCurrentOrientation(SensorEvent event) { float y = event.values[1]; float z = event.values[2]; //        .      . if (in(z, 60, 100)) return 1; if (in(z, -20, 20) && y > 50) return 2; if (in(z, -20, 20) && y < -50) return 0; if (in(z, -100, -60)) return 3; return -1; } /** *    * * @param event */ public boolean onSensorChanged(SensorEvent event) { if (System.currentTimeMillis() - lastUpdateTime < 500) return false; lastUpdateTime = System.currentTimeMillis(); orientation = getCurrentOrientation(event); if (activity.getClass() == Guitar.class) if (orientation == 0) rightPosition = true; if (activity.getClass() == Sing.class) if (orientation == 1) rightPosition = true; if (activity.getClass() == Drums.class) if (orientation == 2) rightPosition = true; if (activity.getClass() == Piano.class) if (orientation == 3) rightPosition = true; if (!rightPosition) return false; Intent intent = null; switch (orientation) { case 0: { Log.v("Orientation = " + orientation + ", launching Guitar"); intent = new Intent(activity, Guitar.class); break; } case 1: { Log.v("Orientation = " + orientation + ", launching Sing"); intent = new Intent(activity, Sing.class); break; } case 2: { Log.v("Orientation = " + orientation + ", launching Drums"); intent = new Intent(activity, Drums.class); break; } case 3: { Log.v("Orientation = " + orientation + ", launching Piano"); intent = new Intent(activity, Piano.class); break; } } if (intent != null) { activity.startActivity(intent); activity.finish(); return true; } return false; } } 
рдлрд┐рд░ рдПрдХ рдРрд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдмрд╛рдХреА рдЦреЗрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реЛред
 public abstract class TalentGameActivity extends BaseGameActivity implements SensorEventListener { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { if (GameModel.getInstance().sensorRotation.onSensorChanged(event)) { //     } } @Override public void onLoadComplete() { .... //    instance   SensorRotation.instance.sensorRotation.register(this, this); ..... } } 
рдЕрдм рд╣рдо рд╕рднреА рдЦреЗрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ 180 рдбрд┐рдЧреНрд░реА рддрдХ рдЙрд▓реНрдЯрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрдорд░рд╛ рдХреЛ 180 рдбрд┐рдЧреНрд░реА рддрдХ рдЙрд▓реНрдЯрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
 public class Drums extends TalentGameActivity { @Override public Engine onLoadEngine() { super.onLoadEngine(); mCamera = new Camera(0, 0, Const.ENGINE_PORTRAIT_WIDTH, Const.ENGINE_PORTRAIT_HEIGHT); mCamera.setRotation(180); //      180          . mEngine = new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new FillResolutionPolicy(), mCamera)); // ScreenOrientation -    //mEngine = new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new FillResolutionPolicy(), mCamera)); super.onLoadEngine(); return mEngine; } } 
рд╡рд╣ рд╕рдм рд╣реИред


Source: https://habr.com/ru/post/In124845/


All Articles