SurfaceView

Рейтинг: 0Ответов: 0Опубликовано: 24.01.2015

Есть два активити:

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(new GameMap(this))

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(new GameView(this))

Во время игры надо часто переключаться между активити. Сами классы и их поведение прописаны в отдельных файлах. Если сначала включить первое активити, затем второе, а потом опять первое, то программа вылетает.

                        Context context = getContext(); 
                     Intent intent = new Intent(context, map.class); 
                     context.startActivity(intent);

Заметил особенность, если закомментировать конструкторы обоих классов, то переключение идет нормально. А если открыть один из них, то вылетают ошибки.

          Thread = new GameThread(this); 
       Bitmap b;
        b = BitmapFactory.decodeResource(getResources(), R.drawable.b_t);
        map = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap_map);
        pm_bg = BitmapFactory.decodeResource(getResources(), R.drawable.p_m);
        DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
    WIDTH_DISPLAY  =  displaymetrics.widthPixels;
    HEIGHT_DISPLAY =  displaymetrics.heightPixels; 
    x = 0;
    y = 0;
    map_w = map.getWidth();
    map_h = map.getHeight();    
        PM = new PlayerManeger(WIDTH_DISPLAY, 0, WIDTH_DISPLAY + WIDTH_DISPLAY, HEIGHT_DISPLAY, pm_bg);
    b1 = new GameButton(x + 100 , y + 100, (x + 100)  + 100, (y + 100) + 100,b,b);

И конструктор GameView:

      Thread = new GameThread(this); 
       RED = Color.RED;
        BLUE = Color.BLUE;
        YELLOW = Color.YELLOW;
        SKILL_ONE = 1;
        SKILL_TWO = 2;
        DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
WIDTH_DISPLAY  =  displaymetrics.widthPixels;
HEIGHT_DISPLAY =  displaymetrics.heightPixels; 
y_floor =  (int) (HEIGHT_DISPLAY - (HEIGHT_DISPLAY * 0.5));
        Scale = (float) 0.3;     
bg = BitmapFactory.decodeResource(getResources(), R.drawable.background_sand);
b1 = BitmapFactory.decodeResource(getResources(), R.drawable.button_1);
bg = Bitmap.createScaledBitmap(bg, WIDTH_DISPLAY, HEIGHT_DISPLAY,  false);
        FB = new Bullet(this);

Классы писал на основе вот этого: http://habrahabr.ru/post/136802/

Ответы

Ответов пока нет.